Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;“无不在”中;vs";不是“没有”;_Python_Syntax_Logic - Fatal编程技术网

Python &引用;“无不在”中;vs";不是“没有”;

Python &引用;“无不在”中;vs";不是“没有”;,python,syntax,logic,Python,Syntax,Logic,除非我疯了,如果x中没有和如果x中没有是等价的。是否有首选版本?我猜None-not-in更像英语,因此更像python,但not-None-in更像其他语言语法。是否有首选版本?它们编译为相同的字节码,因此是的,它们是等效的 >>> import dis >>> dis.dis(lambda: None not in x) 1 0 LOAD_CONST 0 (None) 3 LO

除非我疯了,
如果x中没有
如果x中没有
是等价的。是否有首选版本?我猜
None-not-in
更像英语,因此更像python,但
not-None-in
更像其他语言语法。是否有首选版本?

它们编译为相同的字节码,因此是的,它们是等效的

>>> import dis
>>> dis.dis(lambda: None not in x)
  1           0 LOAD_CONST               0 (None)
              3 LOAD_GLOBAL              1 (x)
              6 COMPARE_OP               7 (not in)
              9 RETURN_VALUE
>>> dis.dis(lambda: not None in x)
  1           0 LOAD_CONST               0 (None)
              3 LOAD_GLOBAL              1 (x)
              6 COMPARE_OP               7 (not in)
              9 RETURN_VALUE
这也清楚地表明,这两者是等价的:

x不在s中
返回s中
x的反运算

正如你提到的,
None not in x
是更自然的英语,所以我更喜欢用这个

如果您在x中写入
而不是y
,可能不清楚您的意思是
而不是(x中的y)
还是
(不是y)而不是x
。如果在表达式中使用
not,则不存在歧义

not (None in x) 
(为了清楚起见添加了parens)是一个普通的布尔否定。但是,

None not in x
为更可读的代码添加了特殊语法(在in前面使用and、or等在这里是不可能的,也没有意义)。如果添加了此特殊情况,请使用它

这同样适用于

foo is not None
vs


我发现“不是”读起来更清楚。另外,如果表达式是更大的布尔表达式的一部分,则其范围将立即变得清晰。

另请参见,如果您只是将一个运算符更改为另一个运算符,那么许多问题都会重复。Hanks,不知道您可以像这样比较字节码。
not foo is None