5

今天我很惊讶地看到以下内容没有例外(至少在 Python 2.7.3 中):

>>> try:
...     pass
... except ThingThatDoesNotExist:
...     print "bad"
...
>>>

我原以为这应该NameError在 REPL 中引发 a ,类似于以下内容:

>>> x = ThingThatDoesNotExist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ThingThatDoesNotExist' is not defined

有人知道这里发生了什么吗?

4

1 回答 1

4

这不会引发异常的相同原因:

>>> True or ThingThatDoesNotExist

Python 在需要评估的那一刻准确地查找名称。不需要评估的名称不会被查找,并且查找失败会引发异常。

于 2013-04-08T14:47:21.617 回答