Python:“ not”关键字放置

时间:2019-12-05 01:30:01

标签: python

以下哪个更优选?为什么?

PEP8对此有发言权吗?

if retcode != 0 and not "ignore_warning" in cmd_out:

if retcode != 0 and "ignore_warning" not in cmd_out:

在功能上,我相信他们能达到相同的效果

2 个答案:

答案 0 :(得分:3)

  

使用“不是”运算符而不是“不是...是”运算符。尽管两个表达式在功能上都相同,但前者更易读,更可取。

PEP8

答案 1 :(得分:3)

看着反汇编的字节码,两个表达式都相同。从可读性的角度来看,第二个选项更好。

if a != 10 and not b in "test":

if a != 10 and b not in "test":

提供相同的反汇编代码

  2           0 LOAD_FAST                0 (a)
              2 LOAD_CONST               1 (10)
              4 COMPARE_OP               3 (!=)
              6 POP_JUMP_IF_FALSE       26
              8 LOAD_FAST                1 (b)
             10 LOAD_CONST               2 ('test')
             12 COMPARE_OP               7 (not in)
             14 POP_JUMP_IF_FALSE       26