Why is and operator on two values gives the last value?(为什么两个值的AND运算符会给出最后一个值?)
本文介绍了为什么两个值的AND运算符会给出最后一个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在对Python操作符进行一些修改,遇到了一些我不确定的事情。
如果我对两个整数执行按位运算(&;,|),我将毫不奇怪地获得它们的按位值
。
含义:
>>> a = 11
>>> b = 3
>>> a & b
3
这是因为按位AND对这些数字的二进制表示执行AND。 但是,如果我使用内置的AND运算符,我将获得第二个变量,而不考虑它的类型:
>>> b and a
11
>>> 'b' and 'a'
'a'
为什么会这样?
推荐答案
逻辑运算符对对象的真实性进行操作。每个对象都有真值,除非它有一个被显式重写以引发错误的__bool__方法。a and b(逻辑)和a & b(按位)之间的主要区别在于,前者适用于任何对象,而后者仅适用于支持按位运算的数值类型。
Python的逻辑运算符专门用于返回上次求值的对象的结果:
a and b:返回Falsya或b(如果a为True)a or b:返回TRUTYa或b(如果a为FALSE)
来自tutorial:
布尔运算符
and和or是所谓的短路运算符:从左到右计算它们的参数,一旦确定结果,计算就停止。例如,如果A和C为真,但B为假,则A and B and C不计算表达式C。当用作常规值而不是布尔值时,短路运算符的返回值是最后计算的参数。
此属性半惯用地用于在访问值之前检查值。例如,如果列表必须包含元素,则可以执行类似
的操作if x and x[0] == value:
# ...
这不会引发错误,因为如果x为Falsy(空),and表达式将返回x而不是x[0] == value。
这篇关于为什么两个值的AND运算符会给出最后一个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么两个值的AND运算符会给出最后一个值?
基础教程推荐
猜你喜欢
- IBM Watson SpechtoTextV1错误-Python 2022-09-22
- H5py:如何在HDF5组和数据集上使用key()循环 2022-09-21
- GridSearchCV.Best_Score不同于CROSS_VAL_Score(GridSearchCV. 2022-09-21
- 当按下按钮时,将动态创建的按钮信息传递给函 2022-09-21
- 多索引数据帧删除每个组具有最大值的行 2022-09-22
- 跟在带量词的前瞻后面有什么作用? 2022-09-22
- Socket.recv为空,但结果显示在Maya中 2022-09-21
- 使用pyinstaller后,Python应用程序无法运行,但未显 2022-09-21
- 使用Python访问已在运行的进程 2022-09-21
- 在VBA中调用python代码:权限错误 2022-09-22
