今天我很惊讶地看到以下工作没有例外(至少在Python 2.7.3中):
>>> try:
... pass
... except ThingThatDoesNotExist:
... print "bad"
...
>>>
Run Code Online (Sandbox Code Playgroud)
我本以为这应该NameError在REPL中引发一个,类似于以下内容:
>>> x = ThingThatDoesNotExist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ThingThatDoesNotExist' is not defined
Run Code Online (Sandbox Code Playgroud)
任何人都知道这里发生了什么?
出于同样的原因,这不会引发异常:
>>> True or ThingThatDoesNotExist
Run Code Online (Sandbox Code Playgroud)
Python 在需要计算名称时准确地查找名称。不需要评估的名称不会被查找,并且查找失败会引发异常。
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |