Python:无测试,布尔值测试

2024-05-16 23:28:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这些方法之间是否存在与实现相关的低级差异(性能方面的差异)。。?

# check if string is empty
# the preferred way it seems [1]
if string:
    print string
else:
    print "It's empty."

# versus [2]
if string is '':

# or [3]
if string == '':

例如,在测试None时,我仍然发现它更具可读性和明确性:

if some_var is not None:

…而不是。。

if not some_var:

if not some_var,至少对我来说,总是读“如果某个变量不存在”。

哪个更好用,什么是==is和bool测试的正确用例?


Tags: the方法nonestringifisvarcheck
3条回答

关于蒂姆·皮茨克的回答:

if string:
    print string

这将测试string的计算结果是否为True。一、 E

>>> bool("")
False
>>> bool(None)
False
>>> bool("test")
True

所以它不仅测试它是否为空,而且测试它是否为None或空。这可能会产生影响,这取决于您如何处理None/empty。

切勿使用is进行(值)相等测试。仅用于测试对象标识。它可能适用于示例if string is '',但这依赖于实现,您不能依赖它。

>>> a = "hi"
>>> a is "hi"
True
>>> a = "hi there!"
>>> a is "hi there!"
False

除此之外,使用最能传达代码含义的东西。

我更喜欢较短的if string:,但是if string != '':可能更明确。

然后if variable:同样适用于每种对象,因此如果variable不局限于一种类型,这比if variable != "" and variable != 0:等要好

首先,不要使用if string is '':,因为这不能保证工作。CPython实习生短字符串是一个实现细节,不应该依赖这个事实。

我认为,使用if string:检查string是否为非空是一种python方法。

但是使用if string == ''并没有什么错误。

相关问题 更多 >