#####全局变量与局部变量########
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)
