Python中and运算符返回空列表而非布尔值,是预期行为还是Bug?
这是Python的预期行为,不是Bug
Python里的and运算符逻辑和你想的不一样——它不会把结果转换成布尔值返回,而是直接返回第一个假值本身;如果所有操作数都是真值,才返回最后一个真值。
举几个例子你就懂了:
- 执行
[] and False时,第一个操作数[]是假值,所以直接返回[] - 要是写成
False and [],第一个操作数是False,就会返回False - 试下
[1] and False,第一个是真值,就会继续判断第二个,最终返回False - 再看
[1] and [2],两个都是真值,就返回最后一个操作数[2]
空列表确实是假值,但Python的逻辑运算符返回的是原始的操作数对象,不是统一转成布尔值的True或False。这种设计其实很实用,比如可以写result = input_value or default_value,如果输入值为假就用默认值,不用额外写判断逻辑。
内容的提问来源于stack exchange,提问作者Rage
相关产品推荐
相关产品推荐

