tHe*_*ver 1 python logical-operators python-3.x
我一直在对 Python 运算符进行一些修改,但遇到了一些我不确定的事情。
如果我对 2 个整数执行按位运算 (&, |) ,我将毫不奇怪地得到它们的按位值
。意义:
>>> a = 11
>>> b = 3
>>> a & b
3
Run Code Online (Sandbox Code Playgroud)
这是因为按位和执行和对这些数字的二进制表示。但是,如果我使用内置的 and 运算符,我将获得第二个变量,而不管它是什么类型:
>>> b and a
11
>>> 'b' and 'a'
'a'
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
逻辑运算符对对象的真实性进行操作。每个对象都有真值,除非它有一个__bool__被显式覆盖以引发错误的方法。a and b(logical) 和a & b(bitwise)之间的主要区别在于,前者适用于任何对象,而后者仅适用于支持按位运算的数字类型。
Python 的逻辑运算符专门用于返回最后一个评估对象的结果:
a and b: 返回一个 Falsy a,或者b(如果a是真的)a or b: 返回一个 Truthy a,或b(a如果为假)从教程:
布尔运算符
and和or所谓的短路运算符:它们的参数从左到右求值,一旦确定结果就停止求值。例如,如果A和C为真但B为假,A and B and C则不计算表达式C。当用作一般值而不是布尔值时,短路运算符的返回值是最后一个求值的参数。
此属性半惯用地用于在访问值之前检查值。例如,如果列表必须包含一个元素,您可以执行以下操作
if x and x[0] == value:
# ...
Run Code Online (Sandbox Code Playgroud)
这不会引发错误,因为如果x是 Falsy(空),则and表达式将返回x而不是x[0] == value。
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |