Auto-PEP8 通过将我的 lambda 转换为 def 函数来添加行,我如何禁用这种特定的自动格式?

Auto-PEP8 is adding lines by turning my lambda into def function, how do I disable this specific auto format?

我正在使用 Visual Studio 代码,PEP8 会自动格式化我的一部分代码,我刚刚学习了 lambdas,我有一个像这样的 3 行代码:

它来自 3 行 代码:

# Lambda example
divide = lambda x, y: x/y
print(divide(10, 2))

7行代码:

# Lambda example


def divide(x, y): return x/y


print(divide(10, 2))

有谁知道如何让这个程序专门不将我的 lambda 函数转换为 def 函数?

它一直在很好地格式化我的代码,所以我不想完全禁用这个自动功能,只是为了 lambda。

这是由pycodestyle代码触发的E731

您可以使用 --ignore=E731

禁用此功能

在配置文件中(例如 tox.ini / setup.cfg):

[pep8] 
ignore=E731

有一些方法可以禁用自动将 lambda 转换为函数定义。

  • 使用 --ignore=E731,正如 Anthony Sottile 在 (his/her) 回答中所解释的那样。按 Ctrl+,,搜索 autopep8,然后添加项目 --ignore=E731,如以下屏幕截图所示。

  • 或者您先通过调用 pip uninstall autopep8 卸载 autopep8,然后通过 pip install yapf 安装 yapf

  • 我让其他人从这一行添加其他方法。

另一种解决方案是在 lambda 赋值周围加上 括号

divide = (lambda x, y: x/y)

autopep8 不会用 def.

替换上面的片段

总的来说,我会反对这样做,因为它违反了 PEP8 的建议。

然而,这有一些用例,例如如果变量是 有条件地分配给不同的功能, 当使用 def s.

表达时,这看起来很混乱