Sha*_*ger 8

它们的行为相同,直到产生相同的字节码; 他们同样有效率.也就是说,element not in list通常被认为是首选.PEP8没有针对not ... invs. 的具体建议... not in,但它确实针对not ... isvs. ... is not,它更喜欢后者:

使用is not运算符而不是not ... is.虽然两个表达式在功能上是相同的,但前者更具可读性和首选性.

为了显示性能的等效性,快速字节码检查:

>>> import dis
>>> dis.dis('not x in y')
  1           0 LOAD_NAME                0 (x)
              2 LOAD_NAME                1 (y)
              4 COMPARE_OP               7 (not in)
              6 RETURN_VALUE

>>> dis.dis('x not in y')
  1           0 LOAD_NAME                0 (x)
              2 LOAD_NAME                1 (y)
              4 COMPARE_OP               7 (not in)
              6 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)