问题 我应该如何在python中缩进三元条件运算符以使其符合PEP8?


如果我没有弄错的话,PEP8对三元运算符没有任何说明。 那么你有什么建议,我应该如何用三元条件运算符编写长行?

some_variable = some_very_long_value \
                if very_long_condition_holds \
                else very_long_condition_doesnt_hold

要么

some_variable = some_very_long_value \
                    if very_long_condition_holds \
                        else very_long_condition_doesnt_hold

您最喜欢哪一个?


12081
2017-10-07 10:04


起源

第一个是更容易阅读的。顺便说一下,有一个pep8程序将检查你的python文件。 pypi.python.org/pypi/pep8 - Vincent Beltman
(1)对于跨越多行的表达式,PEP 8优先于反斜杠使用括号。 (2)如果条件和值太长,您总是不能使用运算符。
不幸的是,对于某些事情提出意见的问题并不是Stack Overflow的主题。在其他几个地方,这些问题可能会得到更好的接待;你应该尝试那里。 - Veedrac


答案:


都不是。对于任何长线,通常最好使用括号来允许换行。不管您是否应该这样做,意见都有所不同:

some_variable = (some_very_long_value
                if very_long_condition_holds
                else very_long_condition_doesnt_hold)

或这个:

some_variable = (
    some_very_long_value
    if very_long_condition_holds
    else very_long_condition_doesnt_hold)

甚至这个:

some_variable = (
    some_very_long_value
    if very_long_condition_holds
    else very_long_condition_doesnt_hold
)

我个人更喜欢第三个;谷歌的内部风格是第二个。


11
2017-10-07 10:11





some_variable = some_very_long_value\
                if very_long_condition_holds\
                else othervalue

面对这样的问题时更喜欢牙套。 在这里查看最大线路长度。 http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length


1
2017-10-07 10:21



牙套?或者你的意思是括号? - PM 2Ring
@ PM2Ring SyntaxError: not a chance - frnhr


some_variable = (some_very_long_value
                 if very_long_condition_holds else
                 very_long_condition_doesnt_hold)
  • 根据PEP8,使用括号而不是反斜杠表示行继续。
  • 通过把 if ... else 在它自己的路线上构建,这个表达的三个部分之间有明显的分离: then 表达式,条件部分和 else 表达。该 then 和 else 表达式统一格式化并与之分离 if...else 构造。

1
2017-08-14 15:43