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运算符会给出最后一个值?
猜你喜欢
- 将文件从Azure文件加载到Azure数据库 2022-09-21
- 合并具有多个索引和列值的数据帧 2022-09-22
- H5py:如何在HDF5组和数据集上使用key()循环 2022-09-21
- 为什么切换屏幕在Kivy中不起作用? 2022-09-21
- 如何将属性添加到作为组存储在HDF5文件中的 pa 2022-09-21
- 获取多索引中某个级别的最后一个元素 2022-09-22
- 基于多个一级列的子集多索引DataFrame 2022-09-22
- 如何防止Groupby超越指数? 2022-09-22
- 如何命名HDF5数据集中的列? 2022-09-21
- 使用带有CROSS_VAL_SCORE的自定义估计器失败 2022-09-21