4

を使用することで積極的な害はありますif False in [a, b, c, d]か?

コードのサイズを縮小し、インタープリターで機能します。しかし、そのような状態が引き起こす可能性のある積極的な害はありますか?

4

3 に答える 3

3

いいえ、通常、そのような状態が引き起こす害はありません。

比較演算子はin何も変更しません。変数abcまたはのいずれかdが実際に0またはFalseである場合、テストは成功し、そうでない場合は失敗します ( を返しFalseます)。リストに (一時的に) 収集された 4 つの変数自体は影響を受けません。

(なぜ0? は Python の and のサブクラスであるためです。同様boolに、インタープリターで試してみてください。 を返し、さらに驚きを試してください)。intFalse == 0TrueFalse in [0]Trueissubclass(bool, int)TrueTrue + 1

1 つの例外は、誰かがインスタンスの状態を変更__eq__するカスタム クラスに等価フックを作成するというミスを犯した場合です。これは、そのカスタム クラスの大きなバグであり、ステートメント自体に固有のものではありません。in

于 2012-11-22T10:10:34.953 に答える