Python的try中的代码有异常,但还是执行成功了一半?

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了

阅读 4.2k
1 个回答

add 函数里面定义的 b 是局部变量,并不会修改掉全局变量,可以像这样修改全局变量

def add():
    global b
    b = 2
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题