num=100
nums=[1,2]
print('num 的id',id(num),'nums的Id',id(nums))
def test():
global num
num=num+100 # 没有global 报错
print('test 中num的id',id(num))
def test2():
nums.append(3)
print('test2 中nums的id',id(nums))
# nums+=[3] UnboundLocalError: local variable 'nums' referenced before assignment
def test3():
print('test3中的',num,nums) # 看看没有对最外层变量修改时,会不会报错
print(num,nums)
test()
test2()
print(num,nums)
print('num 的id',id(num),'nums的Id',id(nums))
print('------')
test3()
"""
num 的id 140709166571648 nums的Id 2304956588616
100 [1, 2]
test 中num的id 140709166574848
test2 中nums的id 2304956588616
200 [1, 2, 3]
num 的id 140709166574848 nums的Id 2304956588616
------
test3中的 200 [1, 2, 3]
"""
总结
在一个函数中对全局变量修改时,应该如何使用global进行定义需要看是否全局变量的指向是否发生改变,if yes, 需要(变量的id发生改变),反之同理