这是一个范围界定的问题,或者更确切地说,是缺乏一个范围。Python没有块作用域;在Python中定义新作用域的唯一方法是函数定义。(理解也是这样,但这是因为它们是使用匿名函数实现的。)
在x块或except块中都没有“本地”except;它们都是在try语句之前定义的相同的x。
有一个例外:e是本地的。它仍然处于与x相同的范围内,但它一旦完成,就会被try语句取消设置,以避免引用周期,就好像您在语句之后立即编写了del e一样。
这是一个范围界定的问题,或者更确切地说,是缺乏一个范围。Python没有块作用域;在Python中定义新作用域的唯一方法是函数定义。(理解也是这样,但这是因为它们是使用匿名函数实现的。)
在x块或except块中都没有“本地”except;它们都是在try语句之前定义的相同的x。
有一个例外:e是本地的。它仍然处于与x相同的范围内,但它一旦完成,就会被try语句取消设置,以避免引用周期,就好像您在语句之后立即编写了del e一样。