为什么这两个等式在Python中会产生两种不同的结果?我不确定为什么第一个输出零;我期待True
。
>>> 0 and 2 >= 0
0
>>> 2 and 0 >= 0
True
答案 0 :(得分:6)
因为第一个被解析为
(0) and (2 >= 0) # 0 evaluates to False
评估为
0 and True
哪个是
0
同样,第二个是
(2) and (0 >= 0) # any non-zero digit is evaluated to True
评估为
True and True
哪个是
True
如果您要评估这两个数字,可以执行
>>> 0 >= 0 and 2 >= 0
True
如果您想检查某些标准,可以使用多位数字
>>> l = [1,4,6,2,7,3]
>>> all(i >= 0 for i in l)
True
答案 1 :(得分:1)
According to reference x and y
被评估为if x is false, then x, else y
。因此,它将第一个值返回转换为bool
类型。第一个值是0
。
答案 2 :(得分:0)
>>> 2 >= 0
True
>>> 0 and True
0
>>> False and True
False
首先,它评估表达式2> = 0然后0和True。 因为在python 0中相当于False,这就是 anding 0和True给出结果0的原因
>>> 2 and 0 >= 0
True
>>> 0 >= 0
True
>>> 2 and True
True
>>>
此处2大于0的方式相同,为True。和 anding 他们给出结果True
答案 3 :(得分:0)
您正在看到and
运营商的短路。如果第一个操作数未计算为真值,则逐字返回第一个值。
将0 and 0
与False and False