#####全局变量与局部变量########
1.全局变量:(顶头写,没有任何的缩进),在文件中任何位置都可以调用
2.局部变量:在子程序里定义的变量
####如果函数内容无global 关键字,优先读取局部变量,无法对全局变量重新赋值。如果没有局部变量,只能读取全局变量。
----有声明局部变量
def liuxiangyu(): NAME = '刘翔宇' print('我要搞',NAME) liuxiangyu()
------ 无声明局部变量,读取全局变量
NAME = ['SB','刘翔宇'] def liuxiangyu(): # NAME = '刘翔宇' print('我要搞',NAME) liuxiangyu()
但是对于可变类型,可以对内部元素进行操作
如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值
---无局部变量,直接读取全局变量
NAME = ['SB','刘翔宇'] def liuxiangyu(): global NAME print('我要搞',NAME) liuxiangyu()
---有局部变量,且局部变量在global关键字下方,该局部变量取代全局变量(局部变量在global关键字的上方,报错)
NAME = ['SB','刘翔宇'] def liuxiangyu(): global NAME NAME = 'LI' print('我要搞',NAME) liuxiangyu()
##########规则:全局变量变量名大写, 局部变量变量名小写
name = '刘傻逼' def liuxiangyu(): name = '李奇好' def liuxiangyuyu(): global name name = '冷静' liuxiangyuyu() print(name) print(name) liuxiangyu() print(name)
name = '刘傻逼' def liuxiangyu(): name = '李奇好' def liuxiangyuyu(): nonlocal name #nonlocal ,指定上一级变量 name = '冷静' liuxiangyuyu() print(name) print(name) liuxiangyu() print(name)