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

Jsh*_*h0s 10 python pep8 autopep8

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

它来自这3 行代码:

# Lambda example
divide = lambda x, y: x/y
print(divide(10, 2))
Run Code Online (Sandbox Code Playgroud)

对于这7 行代码:

# Lambda example


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


print(divide(10, 2))
Run Code Online (Sandbox Code Playgroud)

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

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

Ant*_*ile 8

这是由pycodestyle代码触发的E731

你可以禁用它 --ignore=E731

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

[pep8] 
ignore=E731
Run Code Online (Sandbox Code Playgroud)

  • 感谢你的回答。这对我有用!绝对清楚的是,要在 VSCode 中添加此内容,请在“设置”中搜索“python 格式化参数”,然后添加“--ignore=E731”作为附加输入参数 - https://i.stack.imgur.com /FlEqM.png (3认同)

xpo*_*ort 5

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

  • 使用--ignore=E731安东尼·索蒂尔(Anthony Sottile)在(他/她)的回答中所解释的方式。按Ctrl+,,搜索autopep8,然后添加项目,--ignore=E731如下图所示。

    在此输入图像描述

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

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


Chr*_*isB 5

另一个解决方案是在 lambda 赋值两边加上括号:

divide = (lambda x, y: x/y)
Run Code Online (Sandbox Code Playgroud)

autopep8 不会将上面的代码片段替换为def.

一般来说,我建议不要这样做,因为它违背了 PEP8 的建议。

尽管如此,还是有一些用例,例如,如果变量有条件地分配给不同的函数,那么当使用defs 表达时,这可能看起来非常混乱。