试图了解关于'和'的简单功能。 python中的命令。任何人都可以澄清一下吗?

时间:2015-07-19 13:25:28

标签: python

在Python中,如果我写

z = 1 and 2
print z

然后它产生" 2"。

但如果我写

z = 0 and 2
print z

现在,它产生" 0"。

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

4 个答案:

答案 0 :(得分:7)

0[]""都是 false-ish (在python条件下它们被视为False)。 and返回第一个 false-ish 值或最后一个值。这称为short-circuit evaluation。这就是为什么在一种情况下它返回2(最后一个)而在另一种情况下它返回0 false-ish )。

事实上,如果你考虑逻辑运算,你可以短路这种行为:

x and y (with x false-ish) -> x  
x and y (with x true-ish)  -> y

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

  • 在第一种情况下,它评估x的布尔结果False。这是and操作的正确结果,因为任何False and y False = y
  • 在第二种情况下,它评估y的布尔值。由于x为True,and的结果False y False True y True y {{1}} {1}}(它反映了{{1}})的价值。

答案 1 :(得分:2)

c = a and b

相同
if a:
    c=b
else:
    c=a

我认为更有趣的是or

c = a or b

相同
if a:
    c=a
else:
    c=b

另请注意,if a:if bool(a):的缩写。 bool为此对象/值返回False

None, 0, False, "", [], tuple(), dict(), set() 

正如你所看到的,它们都是空的......

答案 2 :(得分:1)

python短路中的and运算符。也就是说:它只评估足够的操作数(从左到右),以确定结果是True还是False。 and的结果为False,因此在第二种情况下,0的计算结果为False,并返回0,但是当1为True时,还必须计算并返回第二个操作数。

答案 3 :(得分:1)

0被视为False,任何高于零的值被视为True,因此z = 1且2设置z等于2且z = 0且2为0,因为它的计算结果为False。