【问题标题】:Style of bitwise operators in PythonPython 中按位运算符的风格
【发布时间】:2013-02-04 00:38:30
【问题描述】:

我在 PEP 中找不到有关按位运算符(|、&)样式的信息,尤其是在这段代码中:

class MySplashScreen(wx.SplashScreen):
    def __init__(self, parent=None):
        wx.SplashScreen.__init__(self, logo.getBitmap(), wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT, 2000, parent)

在这种情况下我应该使用空格吗(wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT)?

【问题讨论】:

    标签: python pep


    【解决方案1】:

    我肯定会在两边使用空格。否则,很难在变量/常量名称之间发现|

    【讨论】:

    • 能给个官方大会的链接吗?
    • 没有,但abarnert 搞定了 :)
    【解决方案2】:

    如果它存在的话,在 PEP 8 中找到它的位置是 Whitespace in Expressions。但是,没有提到这些运算符:

    始终在这些二元运算符的两边加上一个空格:赋值 (=)、扩充赋值(+=、-= 等)、比较(==、、!=、、=, in, not in, is, is not), Booleans (and, or, not)。

    我认为这是有充分理由的。虽然您几乎肯定想要wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT 中的空间,但我不确定您是否想要a|b 中的空间。事实上,像a&b | c&d 这样的表达式似乎与推荐的x*x + y*y 非常相似。

    你想要它的原因与|的运算符无关,但与wx.SPLASH_CENTRE_ON_SCREEN的值有关。事实上,我认为你会对BIG_LONG_CONSTANT_1 + BIG_LONG_CONSTANT_2 做出同样的决定。因此,当操作数是丑陋的大写常量时,样式指南中可能应该有一条关于运算符周围空格的附加规则。

    但与此同时,我认为没有或不需要关于位运算符的特定规则。以与算术运算符相同的方式对待它们。 (请注意,对于是否在周围放置空格没有特定规则,例如,+,除非在同一表达式中使用具有不同优先级的运算符。事实上,您在 PEP8 中看到了两种方式这意味着它在一般情况下都是可以接受的,您必须在特定情况下使用自己的判断。)

    综上所述,样式检查器pep8 使用 E225 标记不带空格的位和算术运算符。它甚至使用可选的 E226 警告标记“不同优先级”示例,例如 x = x/2 - 1(PEP 8 将其列为“好”)。有关详细信息,请参阅missing_whitespace_around_operator。我不认为这算作任何形式的官方认可——但我认为“我把空格放在这里是为了让代码通过我们选择用于这个项目的样式检查器”是一个非常正当的理由。 (但您可能想查看pep8ify 之类的替代方案,看看pylintpyflakes 等是否有关于该主题的内容。)

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多