我的第一个问题是这个问题更抽象的问题是什么:'为表达式返回 6 的操作是什么 (2 and 2*3)?请随时适当地重新命名我的问题。
我的第二个问题是在 python 中返回 6 的(2 and 2*3). 这里似乎发生了一些优雅的事情,我想了解一下这个操作。
我的第一个问题是这个问题更抽象的问题是什么:'为表达式返回 6 的操作是什么 (2 and 2*3)?请随时适当地重新命名我的问题。
我的第二个问题是在 python 中返回 6 的(2 and 2*3). 这里似乎发生了一些优雅的事情,我想了解一下这个操作。
来自Python 语言参考:
请注意,既不
and也不or限制它们返回的值和类型为 False 和 True,而是返回最后评估的参数。
因此,2 and 2*3意味着它首先评估bool(2),评估为True,然后评估bool(2*3)评估为True。因此它将返回最后一个评估的参数,即2*3( 6)。
根据python 文档
x 和 y :如果 x 为假,则 x,否则 y
应用惰性求值,如果 a 求值为 False,python 返回a and ba,如果 a 求值为 True,则返回 b。
因此 2 评估为 True,2 and 2*3返回2*3等于 6。
基本上和2 and 6.
这个怎么运作?如果它被认为是 False ( , , ...),and则返回第一个元素,否则返回第二个False0[]
这与 Python 如何评估表达式有关x and y。它返回yif xisTrue和xif xif False。
因此,如果2 and 2 * 3, 因为2被评估为True,它将返回值2 * 3,即6。
如果and多个操作数之间进行运算,则返回第一个非值True,如果所有值都是True,则返回最后一个值。
类似地,对于or运算符,表达式 say,A or B or C返回第一个值 True。如果所有值都是False,则返回最后一个值。