小编dab*_*ues的帖子

Python class members type hinting

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 pycharm python-3.x python-typing

15
推荐指数
2
解决办法
6460
查看次数

毒性 0% 覆盖率

我有一个我使用的python项目:

  • 管道
  • 毒物
  • pytest

还有很多。

基本上,我想添加tox到我的 gitlab 管道中。而几乎一切似乎工作,打电话mypyflake8black从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)

python coverage.py pytest python-3.x tox

9
推荐指数
2
解决办法
1370
查看次数

Python 没有名为 X 的模块 - 绝对导入

在我开始之前,我想说 - 我知道,有无数类似的问题,但我找不到我的问题的答案。我有一个这样的目录结构:

.
??? 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.pathfoo.py如下所示:
['/home/dabljues/projects/project/project/C/C', …
Run Code Online (Sandbox Code Playgroud)

python python-import python-3.x

7
推荐指数
1
解决办法
5762
查看次数

Seaborn堆积直方图/条形图

我有一个pandas.DataFrame,我想根据两列绘制一个图形:Age(int),Survived(int- 01)。现在我有这样的事情:

在此处输入图片说明

这是我使用的代码:

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 1Survived列,对于特定的年龄范围。

所以我想要这样的东西:

在此处输入图片说明

在这种情况下,您会看到这种差异。是否有某种方法可以做到seaborn(因为我可以很容易地对其进行操作pandas.DataFrame)?matplotlib如果可能的话,我不想使用香草

python matplotlib pandas seaborn

5
推荐指数
2
解决办法
2401
查看次数

如果constexpr vs如果常量

如这个问题所示: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中的表达式(它涉及到constconstexpr),那么优化也可以在此处进行。

我以前认为这是的目的if constexpr,但我错了。那么,除了用例之外,还有没有if constexpr其他用例,那么我们可能只有许多if分支有效之一?

c++ optimization constexpr if-constexpr

3
推荐指数
2
解决办法
89
查看次数

Git diff 所有本地未提交的更改

我有以下问题。我想从 获取输出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所有未暂存和已暂存文件的部分,但不将其与远程进行比较(因为它也需要所有本地提交),而只是将其与上次本地提交进行比较。有没有办法做到这一点?

git git-diff

3
推荐指数
1
解决办法
5335
查看次数

创建从字典键到它的值的所有组合的 Pythonic 方式

所以假设我有一本这样的字典:

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 python-itertools python-3.x

2
推荐指数
1
解决办法
34
查看次数