小编典典

Python:如果不是val,则如果val为None

python

我一直以样式进行编码if not value,但是,一些指南引起了我的注意,尽管这种样式有效,但似乎存在两个潜在问题:

  1. 它不完全可读;if value is None当然更容易理解。
  2. 这可能影响后(并导致微妙的错误),因为像[],并0会评估为False也。

我也开始将此想法应用于其他比较,例如:

  • if not valueif value is False
  • if not valueif value is []

清单也是如此…

问题是,您对这一原则走了多远?在确保代码安全的同时,在哪里划界线?

if value is None无论如何,我应该始终使用该样式吗?


阅读 159

收藏
2021-01-20

共1个答案

小编典典

如果需要的话,可以使用与“无”的比较。如果您只是想检查该值是否被认为是错误的,请使用“ if not value”(空列表,none,false)。

我发现“如果没有价值”看起来更简洁,更Python化。

另外,请注意列表。比较空列表时,请勿使用is。如果您知道要获取列表,请使用“ if”检查列表是否包含任何内容(或len())。尝试将其输入解释器:

>>> a = []
>>> a is []
False

这是因为您刚创建的临时列表在内存中的地址与存储在“
a”中的地址不同。您不会看到None,False或True,因为它们都是单例值(它们都指向内存的同一部分),因此使用’is’关键字是可行的。

您还将发现CPython会实习字符串,因此以下工作。

>>> 'a' is 'a'
True

你应该 靠这个。这是一个实现细节,并非指定要与每个Python版本一起使用。

2021-01-20