在Python中,13和9等于多少?
布尔运算符 'and' 的意思是“与”,当两边的值都是 True
时,它才会返回 True
。在这里,除了0以外的任何数字都被认为是 True
。所以在下面的代码中,python 应该返回 True
:
13 and 19
但是为什么它返回了19呢?
2 个回答
0
表达式 x and y 首先会先看 x 的值。如果 x 是假的(比如说是 0),那么就直接返回 x 的值;如果 x 不是假的,那么就会去看 y 的值,并返回 y 的值。
https://docs.python.org/3/reference/expressions.html#boolean-operations
简单来说,如果 x 是 0
,那么结果就是 0
;如果 x 不是 0,那么结果就是 y
的值。
0
布尔运算符
and
在两个条件都为True
时返回True
如果两个条件都是字面上的 True
,比如 True and True
,那结果自然就是 True
。对于其他值来说,它们要么是“真实的”,要么不是,这种情况下,最后一个值会被传递下去。1
这是因为你不总是想要一个布尔值。如果写成 test = x and "works!" or "nope"
,如果它返回一个布尔值而“吞掉”了你的字符串,那就太烦人了。
如果你真的想要一个布尔值,可以用 bool()
来转换,这样可以把“真实的”值变成 True
,而其他的则变成 False
。
1 很多编程语言都遵循这个传统,类型有一个“真实的”状态,比如 Ruby 中 13 and 19
会得到 19,JavaScript 中 13 && 19
也会得到 19
。如果 Python 的行为和这些语言差别太大,可能会引起很大的反响,因为这是大家期望的行为。