我知道python通常只为类、函数等创建新的作用域,但我对try/except块或上下文管理器中的as
语句感到困惑.在块内部分配的变量可以在块外部访问,这是有意义的,但与as
绑定的变量本身就没有意义.
所以这失败了:
try:
raise RuntimeError()
except RuntimeError as error:
pass
print(repr(error))
但这成功了:
try:
raise RuntimeError()
except RuntimeError as e:
error = e
print(repr(error))
as
绑定的变量发生了什么,为什么不应用常规的python范围规则?PEP表示它只是一个正常绑定的python变量,但事实似乎并非如此.