Python True/False 求值规范 | Google 官方写法
2025-07-23 11:49 更新
True/False的求值
Tip
尽可能使用”隐式”假值。
定义:
Python 在计算布尔值时会把一些值视为 False
。简单来说,所有的“空”值都是假值。因此,0, None, [], {}, ""
作为布尔值使用时相当于 False
。
优点:
Python 布尔值可以让条件语句更易懂,减少失误。
多数时候运行速度也更快。
缺点:
对 C/C++ 开发人员来说,可能看起来有点怪。
结论:
尽可能使用“隐式”假值,例如:使用 if foo:
而非 if foo != []:
。不过还是有一些注意事项需要你铭记在心:
- 一定要用
if foo is None:
(或者is not None
) 来检测None
值。例如,如果你要检查某个默认值为None
的参数有没有被调用者覆盖,覆盖的值在布尔语义下可能也是假值! - 永远不要用
==
比较一个布尔值是否等于False
。应该用if not x:
代替。如果你需要区分False
和None
,你应该用复合表达式,例如if not x and x is not None:
。 - 多利用空序列(字符串, 列表, 元组)是假值的特点。因此
if not seq:
比if len(seq):
更好,if not seq:
比if not len(seq):
更好。 -
处理整数时,使用隐式 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 []
- 注意,‘
0
’(字符串, 不是整数)作为布尔值时等于True
。 - 注意,把 Numpy 数组转换为布尔值时可能抛出异常。因此建议用
.size
属性检查np.array
是否为空 (例如if not users.size
)。
以上内容是否对您有帮助:
更多建议: