试图理解python中关于'和'命令的简单特性.任何人都可以澄清一下吗?

She*_*hah 2 python

在Python中,如果我写的话

z = 1 and 2
print z
Run Code Online (Sandbox Code Playgroud)

然后它产生"2".

但如果我写

z = 0 and 2
print z
Run Code Online (Sandbox Code Playgroud)

现在,它产生"0".

它在现实生活中的问题可能并不重要,但我试图理解这里的逻辑.

enr*_*cis 7

0,[],""都是假肥胖型(它们被视为False在一个python条件).and返回第一个false-ish值或最后一个.这称为短路评估.这就是为什么在一个情况下,它返回2(最后)和其他返回0(在假十岁上下).

实际上,如果您考虑逻辑运算,可以将此行为短路:

x and y (with x false-ish) -> x  
x and y (with x true-ish)  -> y
Run Code Online (Sandbox Code Playgroud)

当插入条件时,它将评估为:

  • 在第一种情况下,它计算布尔结果xFalse.这是操作的正确结果and,因为False and y= False对于任何操作y.
  • 在第二种情况下,它计算布尔值y.既然x是真,结果and应该是FalseyFalseTrueyTrue(它反映的价值y).