Python 中的 'and' vs '&'

2024 年 8 月 29 日 | 4 分钟阅读

在接下来的教程中,我们将了解 Python 编程语言中 'and' 和 '&' 之间的区别。

理解 Python 中 'and' 和 '&' 之间的区别

这些是我们将在 Python 中使用的一些运算符;然而,两者之间存在根本的区别。'and' 运算符用于测试所使用的两个表达式是否逻辑上TRUE。另一方面,'&' 运算符在与False/True 值一起使用时,测试它们是否都为 TRUE

在 Python 编程语言中,空的内置对象通常被视为逻辑上为False。然而,在这种情况下,非空的内置对象始终为逻辑上为True。因此,当用户希望在列表不为空时执行某些操作,而在列表为空时执行其他操作时,这为常规使用提供了一种便利。

现在让我们进一步了解上面讨论的两个运算符。

  1. Python 中的 'and' 运算符: 'and' 运算符是逻辑AND,当两个操作数也都为TRUE 时,它返回TRUE
  2. Python 中的 '&' 运算符: '&' 运算符是 Python 语言中使用的按位运算符。它基本上对不同的位进行操作,并逐位执行操作。

注意:当整数值为 0 时,我们将其视为 False。然而,当我们在逻辑上使用它时,我们将其视为 True。这是因为 'and' 运算符测试这两个表达式是否(在逻辑上)为 True - 而 '&' 运算符对从两个语句获得的结果执行不同的按位 AND 操作。

现在让我们看一些演示这些运算符用法的示例。

示例 1

输出

18
2

说明

在上面的代码片段中,我们声明了两个变量,并使用 'and' 和 '&' 运算符执行了操作。结果,操作的输出存在差异。这是因为 'and' 测试两个表达式是否在逻辑上为True,而 '&' 对两个语句的输出执行按位AND 操作。

编译器检查第一个语句中的第一个表达式是否为True。如果第一个表达式为False,它将不会测试第二个表达式,并立即返回False。这个过程称为“惰性求值”。如果第一个表达式为True,则测试第二个表达式,根据AND 操作的规则,仅当两个语句都为True 时,结果才为True。在上面的示例中,编译器测试第一个表达式,值为6qTrue。编译器接着处理第二个表达式,因为 p 的值为18,所以它也为True。因此,输出也是18

在第二个语句中,编译器正在对表达式的输出执行按位的 & 操作。在这里,语句的求值如下:

执行按位 & 操作后,我们将得到:

因此,输出为2

让我们看另一个例子来详细说明这一点。

示例 2

输出

8
12

说明

在上面的代码片段中,我们声明了两个变量并打印了两个操作的结果。

第一个语句对两个变量执行按位 AND 操作,第二个语句评估 print 中的语句并打印答案。

在第一个语句中,a = 1011, b = 1100,对 ab 执行 & 得到 1000,这是十进制值 8 的二进制值。

在第二个语句中,表达式 'a and b' 首先求值 a;如果 aFalse(或),则由于上面解释的“惰性求值”,它会立即返回其值;否则,将求值 b。如果 b 也非零,则返回结果值。返回 b 的值是因为它是检查语句真伪的最后一个值。

因此,建议在循环中使用布尔值和 'and'。