我一直以样式进行编码if not value,但是,一些指南引起了我的注意,尽管这种样式有效,但似乎存在两个潜在问题:
if not value
if value is None
[]
0
False
我也开始将此想法应用于其他比较,例如:
if value is False
if value is []
清单也是如此…
问题是,您对这一原则走了多远?在确保代码安全的同时,在哪里划界线?
if value is None无论如何,我应该始终使用该样式吗?
如果需要的话,可以使用与“无”的比较。如果您只是想检查该值是否被认为是错误的,请使用“ if not value”(空列表,none,false)。
我发现“如果没有价值”看起来更简洁,更Python化。
另外,请注意列表。比较空列表时,请勿使用is。如果您知道要获取列表,请使用“ if”检查列表是否包含任何内容(或len())。尝试将其输入解释器:
>>> a = [] >>> a is [] False
这是因为您刚创建的临时列表在内存中的地址与存储在“ a”中的地址不同。您不会看到None,False或True,因为它们都是单例值(它们都指向内存的同一部分),因此使用’is’关键字是可行的。
您还将发现CPython会实习字符串,因此以下工作。
>>> 'a' is 'a' True
你应该 不 靠这个。这是一个实现细节,并非指定要与每个Python版本一起使用。