繁体   English   中英

两个Python语句之间的区别

[英]difference between two Python statements

这两个Python语句有何不同:

>>> if a==1 and b==2:
        pass
>>> if a==1:
        if b==2:
            pass

如果这两个语句是整个代码(例如,没有else匹配if ),则这两个语句将具有相同的效果。

没有实际的区别。 两者都必须评估a==1b==2才能pass执行,并且如果a==1False ,则两者都“短路”并且不评估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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM