全局变量&局部变量
1.全局变量示例
NAME= 'rzq' #全局 def change_name(): print('change_name',NAME) change_name() def change_name(): name = '帅了一比' print('change_name',name) change_name() print(NAME) def change_name(): global NAME name = '帅了一比' print('change_name',name) change_name() print(NAME)
2.如果函数的内容无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值name='fff',但是对于可变类型,可以对内部元素进行操作。如果函数中有global关键词,变量本质上就是全局变量的那个变量,可读取可赋值
NAME ='产品经理' def yangjian(): global NAME# 在局部变量中,如果使用了global关键字,后面如果没有重新修改变量值,那么调用的还是全局变量,如果重新修改了变量那么调用的就是修改后的变量值, # 后面的函数调用的也调用的是修改后的全局变量的值 print('我要搞1',NAME) name = '小东北' print('我要搞2',name) ######全局变量变量名大写 ######局部变量变量名小写 # #如果函数的内容无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值name='fff' # 但是对于可变类型,可以对内部元素进行操作 # #如果函数中有global关键词,变量本质上就是全局变量的那个变量,可读取可赋值 def qupengfei(): #name = '基' print('我要搞3',NAME) yangjian() qupengfei()
3.函数的嵌套
#函数的嵌套 NAME = '海风' def huangwei(): name = '黄薇' print(name) def liuyang(): name = '刘洋' print(name) def nulige(): name = '胡志华' print(name) print(name) nulige() liuyang() print(name) huangwei()
4.加上global的函数嵌套
#加上global的函数嵌套 NAME = '刚娘' def weihou(): name = '沉着' def weiweihou(): global NAME NAME ='冷静' weiweihou() print(name)#这个name指的是weihou中定义的name,因为此时‘沉着’中的name还未被修改,只是定义了局部变量 print(NAME) weihou() print(NAME)
5.nonlocal 关键字:指定上一级变量
#nonlocal 关键字:指定上一级变量 name ='冷静' NAME = '刚娘' def weihou(): name = '沉着' def weiweihou(): nonlocal name #nonlocal指定上一级变量 name ='冷静' weiweihou() print(name)#这个name指的是weihou中定义的name,因为此时‘沉着’中的name还未被修改,只是定义了局部变量 print(NAME) weihou() print(NAME)