一尘不染

Python中的'not in c'与Python中的'e not in c'是否不同?

python

我的助教声称e not in c并非总是会产生与not e in c(他没有给出解释的 原因
)相同的结果。我从来没有亲自看过任何人代码中的第二种形式(除了他和他的书中解释了这两种形式
等效的),并且从未见过两种形式在行为上有所不同,因此我对此主张表示怀疑。没有通过Google找到任何东西,我决定来这里。

那么,有没有人知道两者的行为有所不同的任何情况的信息?


阅读 216

收藏
2021-01-20

共1个答案

一尘不染

它们完全相同,因为两者都实际应用了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
2021-01-20