I am using PyCharm to develop some Python app. I am trying to use as cutting-edge python as possible, so I am making use of new python features. I have a problem with type hinting.
Let's all take a look at my DataAnalyzer class:
class DataAnalyzer:
def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
self.train_data = train_data
self.test_data = test_data
def analyze(self):
pass
Run Code Online (Sandbox Code Playgroud)
Now PyCharm spams me with yellow bulbs wanting me to add type annotations to self.train_data and …
我有一个我使用的python项目:
还有很多。
基本上,我想添加tox到我的 gitlab 管道中。而几乎一切似乎工作,打电话mypy,flake8或black从TOX工作正常。但是,当我tox -e py37在启用覆盖率的情况下调用(所以我想运行测试)时,会运行测试,我可以看到它们的结果,但是覆盖率是0% (100%仅在空__init__文件等上)并且我收到警告:Coverage.py warning: No data was collected. (no-data-collected)。
这是我与 pytest 相关的部分tox.ini:
[tox]
envlist = flake8,mypy,black,py37
[testenv]
extras = tests
commands=
pytest --cov -ra --tb=short {posargs}
Run Code Online (Sandbox Code Playgroud)
这是我的.coveragerc:
[run]
branch = True
source =
foo
omit =
foo/__init__.py
foo/__main__.py
foo/bar/__init__.py
foo/baz/__init__.py
[report]
exclude_lines =
pragma: no cover
if __name__ == .__main__.
show_missing …Run Code Online (Sandbox Code Playgroud) 在我开始之前,我想说 - 我知道,有无数类似的问题,但我找不到我的问题的答案。我有一个这样的目录结构:
.
??? project
? ??? A
? ? ??? __init__.py
? ? ??? somelib.py
? ??? B
? ??? C
? ? ??? C
? ? ??? foo.py
? ? ??? __init__.py
? ??? __init__.py
??? run.sh
Run Code Online (Sandbox Code Playgroud)
运行.sh:
python3 project/C/C/foo.py
foo.py :
from project.A.somelib import somefunc
VS Code 实际上获得了智能感知foo.py- 它告诉我可以从somelib. 但是当我运行时run.sh,我收到此错误消息:
from project.A.somelib import somefunc
ModuleNotFoundError: No module named 'project'
Run Code Online (Sandbox Code Playgroud)
有没有办法在保留这个目录结构的同时解决这个问题?
project/__init__.py什么都没改变sys.path在foo.py如下所示:['/home/dabljues/projects/project/project/C/C', …Run Code Online (Sandbox Code Playgroud) 我有一个pandas.DataFrame,我想根据两列绘制一个图形:Age(int),Survived(int- 0或1)。现在我有这样的事情:
这是我使用的代码:
class DataAnalyzer:
def _facet_grid(self, func, x: List[str], col: str = None, row: str = None) -> None:
g = sns.FacetGrid(self.train_data, col=col, row=row)
if func == sns.barplot:
g.map(func, *x, ci=None)
else:
g.map(func, *x)
g.add_legend()
plt.show()
def analyze(self) -> None:
# Check if survival rate is connected with Age
self._facet_grid(plt.hist, col='Survived', x=['Age'])
Run Code Online (Sandbox Code Playgroud)
因此,这在两个子图中显示。这是好事,但它很难看到的具有记录的金额之间的差额0VS 1在Survived列,对于特定的年龄范围。
所以我想要这样的东西:
在这种情况下,您会看到这种差异。是否有某种方法可以做到seaborn(因为我可以很容易地对其进行操作pandas.DataFrame)?matplotlib如果可能的话,我不想使用香草
如这个问题所示:link,如果两个if分支都有效,则两者之间没有区别:
const int foo = 5;
if (foo == 5)
{
...
}
else
{
...
}
Run Code Online (Sandbox Code Playgroud)
和
const int foo = 5;
if constexpr (foo == 5)
{
...
}
else
{
...
}
Run Code Online (Sandbox Code Playgroud)
在优化方面(在两种情况下else都不会实例化分支)。因此,如果if可以在编译时检查vanilla中的表达式(它涉及到const或constexpr),那么优化也可以在此处进行。
我以前认为这是的目的if constexpr,但我错了。那么,除了用例之外,还有没有if constexpr其他用例,那么我们可能只有许多if分支有效之一?
我有以下问题。我想从 获取输出git diff,但对于所有未提交的本地更改(这意味着未暂存和暂存的文件)。
我不是在搜索 git log 或任何其他输出,它必须被git diff输出,因为然后我用我制作的解析器解析它。
现在我有:
所有未暂存的文件:
git diff
Run Code Online (Sandbox Code Playgroud)
暂存 + 未暂存文件 + 所有本地提交(与远程相比)
git diff origin/master
Run Code Online (Sandbox Code Playgroud)
现在,我错过了可以获取git diff所有未暂存和已暂存文件的部分,但不将其与远程进行比较(因为它也需要所有本地提交),而只是将其与上次本地提交进行比较。有没有办法做到这一点?
所以假设我有一本这样的字典:
d = {"key1": (1, 2, 3), "key2": ("3", "4", "5")}
Run Code Online (Sandbox Code Playgroud)
我想要实现的(没有嵌套循环,以真正的 Pythonic 方式)是以这种方式获取所有键值组合:
[("key1", 1), ("key1", 2), ("key1", 3), ("key2", "3"), ("key2", "4"), ("key2", "5")]
Run Code Online (Sandbox Code Playgroud)
所以就像键的分配值的组合一样,因为该值将是一个容器。
我尝试浏览itertools文档,但我似乎没有找到任何可以帮助我解决这个问题的东西。有什么办法可以很好地做到这一点,还是我使用循环?
python ×5
python-3.x ×4
c++ ×1
constexpr ×1
coverage.py ×1
git ×1
git-diff ×1
if-constexpr ×1
matplotlib ×1
optimization ×1
pandas ×1
pycharm ×1
pytest ×1
seaborn ×1
tox ×1