name = 'lpt' def test(): name = 'liu' print('test',name) test() print(name) 输出结果 test liu lpt
如果想修改全局变量name 在函数任意位置声明如下:
name = 'lpt'
def test():
global name
name = 'liu'
print('test',name)
test()
print(name)
输出结果
test liu
liu
如果函数内部无global关键字,优先读取局部变量,再读取全局变量,无法对全局重新赋值。
对于可变类型,(元组,数字,字符串不可修改)可以对内部元素进行操作 例如name.append('ddd')
如果函数中有global关键字,本质上就是全局的变量,可读取,可赋值。
注意:要在name之前声明全局变量 否则容易报错
name = '产品经理' def yang(): global name print('====>',name) name = 'ddddd' print('------->',name) yang() 输出结果为 ====> 产品经理 -------> ddddd
name = 'gangniang' def weihou(): name = 'chenzhuo' def weiweihou(): global name name = 'lengjing' weiweihou() print(name) print(name) weihou() print(name) 输出结果 gangniang chenzhuo lengjing
notlocal 指定上一级变量
name = 'gangniang' def weihou(): name = 'chenzhuo' def weiweihou(): nonlocal name name = 'lengjing' weiweihou() print(name) print(name) weihou() print(name) 输出结果 gangniang lengjing gangniang