19

重複の可能性:
「not」および「in」キーワードを使用するための構文の順序

e not in c私の TA は、常に同じ結果が得られるとは限らないと主張しています (ただし、彼は理由not e in cを説明しませんでした)。私は個人的に誰かのコードで 2 番目の形式を見たことがなく (2 つ同等であると説明している彼の本と本を除いて)、2 つの動作が異なるのを見たことがないので、この主張には疑いがあります。グーグルで何も見つけられなかったので、ここに来ることにしました。

それで、2つの動作が異なる場合について、誰かが情報を持っていますか?

4

2 に答える 2

26

not inどちらも実際に比較を適用するため、これらはまったく同じです。

In [25]: def func():
    'e' not in 'bee'
   ....:     
   ....:     

In [27]: def func1():
    not 'e' in 'bee'
   ....:     
   ....:     
In [29]: dis.dis(func)
  2           0 LOAD_CONST               1 ('e')
              3 LOAD_CONST               2 ('bee')
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE        

In [30]: dis.dis(func1)
  2           0 LOAD_CONST               1 ('e')
              3 LOAD_CONST               2 ('bee')
              6 COMPARE_OP               7 (not in)
              9 POP_TOP             
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE  
于 2012-10-17T18:58:01.267 に答える
2

それらは同一です。notは よりも優先順位が低いinため、not x in yとして解析されます。これnot (x in y)は の反対を返します。innot in

于 2012-10-17T19:00:46.847 に答える