以下哪个更优选?为什么?
PEP8对此有发言权吗?
if retcode != 0 and not "ignore_warning" in cmd_out:
或
if retcode != 0 and "ignore_warning" not in cmd_out:
在功能上,我相信他们能达到相同的效果
答案 0 :(得分:3)
使用“不是”运算符而不是“不是...是”运算符。尽管两个表达式在功能上都相同,但前者更易读,更可取。
答案 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