为什么两个值上的 and 运算符给出最后一个值?

我一直在对 Python 运算符进行一些修改,但遇到了一些我不确定的事情。

如果我对 2 个整数执行按位运算 (&, |) ,我将毫不奇怪地得到它们的按位值
。意义:

>>> a = 11
>>> b = 3
>>> a & b
3

这是因为按位和执行和对这些数字的二进制表示。但是,如果我使用内置的 and 运算符,我将获得第二个变量,而不管它是什么类型:

>>> b and a
11

>>> 'b' and 'a'
'a'

为什么会这样?

回答

逻辑运算符对对象的真实性进行操作。每个对象都有真值,除非它有一个__bool__被显式覆盖以引发错误的方法。a and b(logical) 和a & b(bitwise)之间的主要区别在于,前者适用于任何对象,而后者仅适用于支持按位运算的数字类型。

Python 的逻辑运算符专门用于返回最后一个评估对象的结果:

  • a and b: 返回一个 Falsy a,或者b(如果a是真的)
  • a or b: 返回一个 Truthy a,或ba如果为假)

从教程:

此属性半惯用地用于在访问值之前检查值。例如,如果列表必须包含一个元素,您可以执行以下操作

if x and x[0] == value:
# ...

这不会引发错误,因为如果x是 Falsy(空),则and表达式将返回x而不是x[0] == value


以上是为什么两个值上的 and 运算符给出最后一个值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>