【问题标题】:How should I indent ternary conditional operator in python so that it complies with PEP8?我应该如何在 python 中缩进三元条件运算符以使其符合 PEP8?
【发布时间】:2014-12-01 17:32:41
【问题描述】:

如果我没记错的话,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

你最喜欢哪一个?

【问题讨论】:

  • 第一个更易读。顺便说一句,有一个 pep8 程序可以检查你的 python 文件。 pypi.python.org/pypi/pep8
  • (1) PEP 8 更喜欢括号而不是反斜杠来表示跨越多行的表达式。 (2) 如果条件和值太长,您总是不能使用运算符。
  • 不幸的是,就某事征求意见的问题不是 Stack Overflow 的主题。在其他几个地方,这些问题可能会得到更好的接受;你应该去那里试试。

标签: python formatting pep8 ternary


【解决方案1】:
some_variable = (some_very_long_value
                 if very_long_condition_holds else
                 very_long_condition_doesnt_hold)
  • 根据 PEP8,使用括号而不是反斜杠作为续行符。
  • 通过将if ... else 构造放在单独的行上,该表达式的三个部分之间有明显的区别:then 表达式、条件部分和else 表达式。 thenelse 表达式格式统一,与 if...else 构造分开。

【讨论】:

    【解决方案2】:
    some_variable = some_very_long_value\
                    if very_long_condition_holds\
                    else othervalue
    

    遇到此类问题时首选大括号。 在此处检查最大线长。 http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length

    【讨论】:

    • 大括号?还是你的意思是括号?
    • @PM2Ring SyntaxError: not a chance
    【解决方案3】:

    两者都没有。对于任何长行,通常最好使用括号来允许换行。是否应该这样做意见不一:

    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
    )
    

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

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多