我有一个非常小的代码示例,它使用了一个try:除了块,我有点困惑为什么它返回 hi 没有被定义:
def myFunction():
try:
pass
except:
hi = "bunk"
print(hi)
hi = "blah"
myFunction()
我原本预计它会继续作为“等等”,除非它落在例外中,在这种情况下它会变成“铺位”。在调试时,IDE会将“blah”作为 hi 的值返回,但在尝试打印时会抛出异常。
似乎 hi 成为函数中的局部变量,所以一旦到达print语句,它就会失败并显示错误,因为它没有定义,因为try语句没有定义它。那是怎么回事?
我意识到如果它没有定义,它会抛出UnboundLocalError,但以下工作正常:
def myFunction():
## try:
## pass
## except:
## hi = "bunk"
print(hi)
hi = "blah"
myFunction()