user_image
By  往事I如梭    On   2019年9月21日 11:27

a = 1 print("函数outer调用之前全局变量a的内存地址: ", id(a)) def outer(): a = 2 print("函数outer调用之时闭包外部的变量a的内存地址: ", id(a)) def inner(): global a # 注意这行 a = 3 print("函数inner调用之后闭包内部变量a的内存地址: ", id(a)) inner() print("函数inner调用之后,闭包外部的变量a的内存地址: ", id(a)) outer() print("函数outer执行完毕,全局变量a的内存地址: ", id(a)) ---------------------分割线-------------------------------- 上面这段代码,我弄不明白的是:调用了inner()函数以后 , 明明在inner()里面声明过global a了 ,为什么接下来print(id(a))的时候,打印的还是a=2 的内存地址而不是a=3的内存地址呢?