Python True/False 求值规范 | Google 官方写法

2025-07-23 11:49 更新

True/False的求值

Tip

尽可能使用”隐式”假值。

定义:

Python 在计算布尔值时会把一些值视为 False。简单来说,所有的“空”值都是假值。因此,0, None, [], {}, "" 作为布尔值使用时相当于 False

优点:

Python 布尔值可以让条件语句更易懂,减少失误。
多数时候运行速度也更快。

缺点:

对 C/C++ 开发人员来说,可能看起来有点怪。

结论:

尽可能使用“隐式”假值,例如:使用 if foo: 而非 if foo != []: 。不过还是有一些注意事项需要你铭记在心:

  1. 一定要用 if foo is None: (或者 is not None) 来检测 None 值。例如,如果你要检查某个默认值为 None 的参数有没有被调用者覆盖,覆盖的值在布尔语义下可能也是假值!
  2. 永远不要用 == 比较一个布尔值是否等于 False。应该用 if not x: 代替。如果你需要区分 False 和 None,你应该用复合表达式,例如 if not x and x is not None:
  3. 多利用空序列(字符串, 列表, 元组)是假值的特点。因此 if not seq: 比 if len(seq): 更好,if not seq: 比 if not len(seq): 更好。
  4. 处理整数时,使用隐式 False 可能会得不偿失(例如不小心将 None 当做0来处理)。你可以显式比较整型值与0的关系 (len() 的返回值例外)。

    正确:

    if not users:
    print('无用户')
    if i % 10 == 0:
    self.handle_multiple_of_ten()
    def f(x=None):
    if x is None:
        x = []

    错误:

    if len(users) == 0:
    print '无用户'
    if not i % 10:
    self.handle_multiple_of_ten()
    def f(x=None):
    x = x or []

  5. 注意,‘0’(字符串, 不是整数)作为布尔值时等于 True
  6. 注意,把 Numpy 数组转换为布尔值时可能抛出异常。因此建议用 .size 属性检查 np.array 是否为空 (例如 if not users.size)。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号