[英]difference between two Python statements
这两个Python语句有何不同:
>>> if a==1 and b==2:
pass
>>> if a==1:
if b==2:
pass
如果这两个语句是整个代码(例如,没有else
匹配if
),则这两个语句将具有相同的效果。
没有实际的区别。 两者都必须评估a==1
和b==2
才能pass
执行,并且如果a==1
为False
,则两者都“短路”并且不评估b==2
。
这是一个短路的例子:
>>> a=1
>>> b=2
>>> if a==1 and b==2:
... print('pass')
...
pass
在这里,第一个语句为True,因此第二个语句被评估,但是c
不存在:
>>> if a==1 and c==2:
... print('pass')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
>>> if a==1:
... if c==2:
... print('pass')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'c' is not defined
在这里,第一条语句为false,因此不会评估无效变量:
>>> a=2
>>> if a==1 and c==2:
... print('pass')
...
>>>
>>> if a==1:
... if c==2:
... print('pass')
...
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.