2024-04-25 12:10:09 发布
网友
在Python中,如果我写
z = 1 and 2 print z
然后得到“2”。你知道吗
但如果我写
z = 0 and 2 print z
现在,它的结果是“0”。你知道吗
这在现实生活中可能不太重要,但我试图理解这里的逻辑。你知道吗
0、[]、""都是假ish(在python条件中它们被视为False)。and返回第一个值或最后一个值。这被称为short-circuit evaluation。这就是为什么在一种情况下它返回2(最后一个),而在另一种情况下它返回0(假ish)。你知道吗
0
[]
""
False
and
2
事实上,如果你考虑逻辑运算,你可以短路这种行为:
x and y (with x false-ish) -> x x and y (with x true-ish) -> y
当插入某个条件时,它将评估为:
x
y
False and y
True
python中的and运算符短路。也就是说:它只计算足够的操作数(从左到右)以确定结果是真还是假。and的结果为False,因此在第二种情况下,0的计算结果为False,并返回0,但当1为True时,还必须计算并返回第二个操作数。你知道吗
c = a and b
与相同
if a: c=b else: c=a
我觉得更有趣的是or:
or
c = a or b
if a: c=a else: c=b
还要注意,if a:是if bool(a):的一个简短方式。bool为此对象/值返回False:
if a:
if bool(a):
bool
None, 0, False, "", [], tuple(), dict(), set()
如你所见,它们都是空的。。。你知道吗
0
、[]
、""
都是假ish(在python条件中它们被视为False
)。and
返回第一个值或最后一个值。这被称为short-circuit evaluation。这就是为什么在一种情况下它返回2
(最后一个),而在另一种情况下它返回0
(假ish)。你知道吗事实上,如果你考虑逻辑运算,你可以短路这种行为:
当插入某个条件时,它将评估为:
x
的布尔结果,即False
。这是and
操作的正确结果,因为任何y
的False and y
=False
。你知道吗y
的布尔值。既然x
是真的,当y
是False
时and
的结果应该是False
,当y
是True
时True
(它反映了y
的值)。你知道吗python中的
and
运算符短路。也就是说:它只计算足够的操作数(从左到右)以确定结果是真还是假。and
的结果为False,因此在第二种情况下,0的计算结果为False,并返回0,但当1为True时,还必须计算并返回第二个操作数。你知道吗与相同
我觉得更有趣的是
or
:与相同
还要注意,
if a:
是if bool(a):
的一个简短方式。bool
为此对象/值返回False
:如你所见,它们都是空的。。。你知道吗
相关问题 更多 >
编程相关推荐