当前推荐的用“and”和“or”操作符打断一长行if语句的方法是什么?
第一个选项
使用下面的样式(来自PEP8)和flake8,我收到警告:W504二元运算符后的换行符:
if (this_is_one_thing and
that_is_another_thing):
do_something()
第二个选项
if (this_is_one_thing
and that_is_another_thing):
do_something()
现在,我在二元运算符之前得到了W503换行符的警告,第二个似乎与PEP8的建议一致
我试着找到答案,但我仍然不确定。我想也许使用第二个选项和禁用W503警告将是一个方法来处理这个问题?
5条答案
按热度按时间iibxawm41#
如果查询documentation on flake 8,我们会看到:
反模式
注意:尽管是在反模式部分,这很快就会被认为是最佳实践。
最佳做法
注意:尽管在最佳实践部分中,这个很快就会被认为是反模式。
因此,在二元运算符 * 之前 * 换行将被视为最佳做法。
The documentation for W504,作为最佳实践,在新生产线之前建议操作员,但没有给出注解:
反模式
最佳做法
gudnpqoy2#
如有疑问,请询问Black:
很长一段时间以来,PEP-8都建议在二元运算符之后中断 *,但是他们“最近”切换到了Donald-Knuth-approved在二元运算符之前中断的风格。
bfhwhh0e3#
Flake8是Python的一个lint,并且the full list of errors对于查找每个特定错误的反模式和最佳实践非常有用。
1bqhqjot4#
您可以使用
all
或any
来代替and
或or
:ppcbkaq55#
通常情况下,我使用反斜线来表示一个
if
语句,该语句在多行中有多个条件,如下所示,因为它可以正常工作,没有任何错误和警告,而且简单,可读性很好:输出: