两个Python语句之间的区别

时间:2015-11-07 20:39:53

标签: python

这两个Python语句有何不同之处:

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

2 个答案:

答案 0 :(得分:2)

如果这两个陈述是整个代码(例如,没有elseif匹配),这两个陈述将具有相同的效果。

答案 1 :(得分:1)

没有实际差异。两者都必须评估a==1b==2执行pass,以及"短路"如果b==2a==1,则不评估False

这是一个短路的例子:

>>> 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')
...
>>>