【发布时间】:2016-06-27 09:48:39
【问题描述】:
想知道if not foo is None 是否与if foo 相同?使用 Python 2.7 和 foo 是一个字符串。
【问题讨论】:
-
@Signal:不,他们不是。
if foo is not None只检查 foo 是否真的不是单例None而if foo检查if bool(foo)或if foo.__nonzero__()是完全不同的东西。 -
当字符串的
len大于0 时,bool(that_string)返回True。如果字符串的len为0,则返回False。我认为像 str 这样的内置函数没有__nonzero__-method,但我不确定。 -
对不起,我把名字弄混了……这个方法叫做
__bool__而不是__nonzero__。 -
我已经上传了我的测试,你可以看看这个gist。
-
每个不为空的变量(如空列表/set/dict/string/...)或 0(整数、浮点数、...)或简单的
False或None当用作if variable或if bool(variable)时,计算结果为True
标签: python string python-2.7