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 的事情。
这是由pycodestyle代码触发的E731
你可以禁用它 --ignore=E731
在配置文件中(例如 tox.ini / setup.cfg):
[pep8]
ignore=E731
Run Code Online (Sandbox Code Playgroud)
有一些方法可以禁用 lambda 自动转换为函数定义。
使用--ignore=E731安东尼·索蒂尔(Anthony Sottile)在(他/她)的回答中所解释的方式。按Ctrl+,,搜索autopep8,然后添加项目,--ignore=E731如下图所示。
或者您autopep8先通过调用卸载pip uninstall autopep8,然后yapf通过进行安装pip install yapf。
我让其他人从这一行添加其他方法。
另一个解决方案是在 lambda 赋值两边加上括号:
divide = (lambda x, y: x/y)
Run Code Online (Sandbox Code Playgroud)
autopep8 不会将上面的代码片段替换为def.
一般来说,我建议不要这样做,因为它违背了 PEP8 的建议。
尽管如此,还是有一些用例,例如,如果变量有条件地分配给不同的函数,那么当使用defs 表达时,这可能看起来非常混乱。