如果定义的变量在try except块中没有更新,为什么会变为未定义?

时间:2017-07-17 22:28:30

标签: python try-except

我有一个非常小的代码示例,它使用了一个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()

0 个答案:

没有答案