Python';s和接线员?

Python';s和接线员?,python,Python,来自Python: >>> 1 and 2 2 >>> 1 and 2 and 3 3 >>> 3 and 2 and 1 1 >>> 'a' and 'b' 'b' 为什么Python返回这些结果?处理纯数字或字符串时的逻辑是什么?当两个表达式之间有'and'关键字时,解释器首先检查第一个表达式。如果第一个表达式为false,它甚至不会检查第二个表达式。所有编程语言都是这样。如果有多个表达式,则从左向右。顺序很重要,因为

来自Python:

>>> 1 and 2
2
>>> 1 and 2 and 3
3
>>> 3 and 2 and 1
1
>>> 'a' and 'b'
'b'

为什么Python返回这些结果?处理纯数字或字符串时的逻辑是什么?

当两个表达式之间有'and'关键字时,解释器首先检查第一个表达式。如果第一个表达式为false,它甚至不会检查第二个表达式。所有编程语言都是这样。如果有多个表达式,则从左向右。顺序很重要,因为在“and”表达式的末尾写入计算代价高昂的操作是一种很好的做法

在第一个示例中,python将1计算为true,然后转到下一个表达式并返回上一个表达式的结果。如果你有这样的案子

'a' and False and 'b'

它将返回
False
,因为解释器将在错误语句后停止。

该逻辑有什么混淆之处?您也可能会发现有用的信息。