<分区>
Variable = None
这三者在特定场景下有什么区别吗?如果没有区别,哪个更适合使用?
if Variable:
print "Hello world"
和
if Variable is not None:
print "Hello world"
和
if Variable != None:
print "Hello world"
在无变量的情况下是否相同?
标签 python comparison
<分区>
Variable = None
这三者在特定场景下有什么区别吗?如果没有区别,哪个更适合使用?
if Variable:
print "Hello world"
和
if Variable is not None:
print "Hello world"
和
if Variable != None:
print "Hello world"
在无变量的情况下是否相同?
最佳答案
Is there any difference between these three in a specific scenario ?
第一个询问变量是否是假的。除了None
——False
、0
、任何空序列等之外,这个测试都会失败。
第二个询问它是否是神奇的单例常量 None
。这只会对 None
本身失败。
第三个询问它是否是任何认为自己等于None
的东西。对于 Holder(None)
,这将失败,其中 Holder
是一个包装类,其实例比较等于它们持有的任何东西。或者,给出一个不太现实但更短的代码示例:
class Stupid(object):
def __ne__(self, other):
return False
Variable = Stupid()
最后一个很少有用;事实上,如果您认为您可能需要检查 == None
或 != None
,并且您还没有专门创建透明包装类或类似的东西,您可能实际上想要 is None
或 is not None
。但是另外两个都非常有用和常见。
if there is no difference which one is more suitable to use?
嗯,有的区别,哪个更合适,要看具体用途。
在问题的最后,您可能会问在 Variable
绝对是 None
的特定情况下是否有任何区别。在那种情况下,三者之间当然没有功能上的区别。*它们都保证是假的,因此什么也不做。这意味着这三者中的任何一个与根本不编写代码之间也没有区别。这更简单、更易读且速度更快。
* 存在性能差异 — 第一个不必 LOAD_CONST
None
,或调用比较运算符。而且,即使您以某种方式设法重新绑定(bind) None
或更改 None
常量的值(可能通过使用 ctypes
?),第一个更有可能仍然有效。但这些都不会变得重要——而且,如果它们真的重要了,那么任何代码都不会更快、更可靠。
关于python - “变量”或 'variable is not None',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652427/