当局部变量和全局变量名字一样时,依然是不同的变量,但是值一样时,地址依然一样。值不一样时,地址不一样,修改局部变量,全局变量的值依然不变,例如:
num = 100
def test():
num = 99
print("局部变量num的值:%d,地址为:%d" % (num, id(num)))
test()
print("全局变量num的值:%d,地址为:%d" % (num, id(num)))
输出:
局部变量num的值:99,地址为:492861520
全局变量num的值:100,地址为:492861552
Python中,当全局变量和局部变量的名字一样时,函数内会优先使用局部变量的值,函数内也没办法直接修改全局变量的值。如果要在局部变量中修改全局变量的值时,修改成如下代码:
num = 100
def test():
global num #告诉解释器num是全局变量
num = 99
print("局部变量num的值:%d,地址为:%d" % (num, id(num)))
test()
print("全局变量num的值:%d,地址为:%d" % (num, id(num)))
输出:
局部变量num的值:99,地址为:492861520
全局变量num的值:99,地址为:492861520