鍍金池/ 問答/Python  網(wǎng)絡(luò)安全/ Python的try中的代碼有異常,但還是執(zhí)行成功了一半?

Python的try中的代碼有異常,但還是執(zhí)行成功了一半?

a=1
b=1
def add():
    b=2
    print("add")
    print(a)
    print(b)
    1/0
try:
    a=2
    add()
except ZeroDivisionError:
    print("error")
    print(a)
    print(b)
finally:
    print("finally")
    print(a)
    print(b)

a 和 b 都被賦值成2了,但是最后打印出:

add
2
2
error
2
1
finally
2
1  

這是什么原理,為什么b被還原成1了

回答
編輯回答
離魂曲

add 函數(shù)里面定義的 b 是局部變量,并不會修改掉全局變量,可以像這樣修改全局變量

def add():
    global b
    b = 2
2018年9月13日 02:48