python - 在 Python 2.7 中检查字符串 "None"或 "not"

标签 python string python-2.7

想知道 if not foo is None 是否与 if foo 相同?使用 Python 2.7 和 foo 是一个字符串。

最佳答案

对于空字符串,两者是不同的:

foo = ''
if foo:
    print 'if foo is True'

不会打印任何东西,因为它是空的,因此被认为是False,但是:

if foo is not None: 
    print 'if not foo is None is True'

将打印,因为 foonot None!

我根据 PEP8 更改了它。 if foo is not None 等同于你的 if not foo is None 但更具可读性,因此被 PEP8 推荐。


关于 Python 中的一般原则的更多信息:

if a is None:
    pass

只有 a = None 被显式设置时,if 才会为 True

另一方面:

if a:
    pass

有几种评估True的方法:

  1. Python 尝试调用 a.__bool__,如果实现了,则使用返回值。

    • 因此 NoneFalse0.00 将评估为 False因为他们的 __bool__ 方法返回 False
  2. 如果 a.__bool__ 未实现,则它会检查 a.__len__.__bool__ 返回的内容。

    • ''[]set()dict() 等将评估为False 因为他们的 __len__ 方法返回 0。这是 False 因为 bool(0)False
  3. 如果连 a.__len__ 都没有实现,那么如果只是返回 True

    • 所以所有其他对象/函数/任何东西都是 True

另请参阅:truth-value-testing在你的 python 文档中。

关于python - 在 Python 2.7 中检查字符串 "None"或 "not",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952257/

相关文章:

python - Mysql使用变量flask进行查询

java - 计算字符串中两个字符之间的总字符数 - JAVA

java - 如何从字符串中分离字母和符号。(即将完成)

MySQL STR_TO_DATE 对于只有月份和年份或只有年份的字符串

python - 我的加密程序需要帮助

Python import AS 因绝对导入而失败

python Django : login with office 365

python - 由于 GIL,多线程 Python 代码中是否不需要锁?

Python - 将元组添加到特定位置的现有元组列表

带有 C 结构数组的 Python ctypes 定义