3

特にこのコードでは、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)?

4

2 に答える 2

2

私は間違いなくどちらかの側にスペースを使用します。|そうしないと、変数名と定数名の間にあるものを見つけるのが困難になります。

于 2013-02-04T00:39:40.540 に答える
1

これが存在する場合、これを見つける場所は、PEP 8の式の空白です。ただし、これらの演算子については言及されていません。

代入(=)、拡張代入(+ =、-=など)、比較(==、<、>、!=、<>、<=、> =)のいずれかの側で、これらの二項演算子を常に単一のスペースで囲みます。 、in、not in、is、is not)、ブール値(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で空白なしのビット演算子と算術演算子の両方にフラグを立てます。x = x/2 - 1また、オプションのE226警告を使用して、(PEP 8に「良好」とリストされている)のような「異なる優先順位」の例にフラグを立てることもできます。詳細missing_whitespace_around_operatorはをご覧ください。これは公式の承認とは見なされないと思いますが、「このプロジェクトで使用するために選択したスタイルチェッカーにコードが合格するようにここにスペースを入れました」というのはかなり正当な理由だと思います。(ただし、、などの代替案を確認して、、、などがトピックについて何か言いたいことがあるかどうかを確認することをお勧めしpep8ifyますpylintpyflakes

于 2013-02-04T00:48:00.360 に答える