📌  相关文章
📜  Python中'and'和'&'的区别

📅  最后修改于: 2022-05-13 01:54:49.079000             🧑  作者: Mango

Python中'and'和'&'的区别

and是一个逻辑与,如果两个操作数都为真,则返回 True,而“&”是Python中的按位运算运算符,作用于位并执行逐位运算。

注意:当整数值为 0 时,它被认为是 False,否则在逻辑上使用时是 True。

例子:

# Python program to demonstrate 
# the difference between and, & 
# operator 
  
a = 14
b = 4
  
print(b and a) # print_stat1
print(b & a) # print_stat2

输出:

14
4

这是因为 'and' 测试两个表达式在逻辑上是否为真,而 '&' 对两个语句的结果执行按位与运算。

在 print 语句 1 中,编译器检查第一个语句是否为 True。如果第一条语句为 False,则不检查第二条语句并立即返回 False。这被称为“惰性评估” 。如果第一个语句为 True,则检查第二个条件,并且根据 AND 运算规则,只有当两个语句都为 True 时,结果才为 True。在上面的例子中,编译器检查第一条语句为真,因为 b 的值为 4,然后编译器转向第二条语句,它也是真,因为 a 的值为 14。因此,输出为还有14。

在打印语句 2 中,编译器对语句的结果进行按位 & 运算。在这里,该语句被评估如下:
二进制中 4 的值是 0000 0100,二进制中 14 的值是 0000 1110。按位执行,我们得到 -

0000 0100
   &  = 0000 0100 = 4
0000 1110

因此,输出为 4。

为了详细说明这一点,我们可以举另一个例子。

例子:

# Python program to demonstrate
# the difference between and, & 
# operator
  
a, b = 9, 10
print(a & b)#line 1
print(a and b)#line 2

输出:

8
10

第一行是对 a 和 b 执行按位与,第二行是评估 print 和打印答案中的语句。
在第 1 行,a = 1001, b = 1010,对 a 和 b 执行 & 得到 1000,它是十进制值 8 的二进制值。
在第 2 行,表达式“a 和 b”首先计算 a;如果 a 为 False(或零),由于上面解释的“惰性求值”,它的值立即返回,否则,b 被求值。如果 b 也非零,则返回结果值。返回 b 的值,因为它是检查语句真实性的最后一个值。
因此,建议在循环中使用布尔值和“和”。