1. 没有缩进,顶头写的变量为全局变量
2. 在子程序里定义的变量为局部变量
3. 只有函数能把变量私有化
name = ‘lhf‘ #全局变量
def change_name():
name = ‘大帅比‘ #局部变量 只在这一段函数里生效
print(name) #先从当前作用域找name,找不到再往外层找
change_name()
print(name)

NAME = ‘lhf‘
def change_name():
global NAME #声明全局变量,把最外层的全局变量NAME 拿来用
NAME = "dabai" #修改全局变量
print(NAME)
print(NAME)
change_name()
print(NAME)

- 有声明局部变量
NAME = [1, 2]
def test():
NAME = ‘自己‘ #又新定义了一个局部变量
print(‘我爱‘, NAME)
test()
print(NAME)

NAME = [1, 2]
def test():
NAME.append(‘你‘) #对可变的全局变量进行内部修改
print(‘我爱‘, NAME[2])
test()
print(NAME)

- 有global 且声明了局部变量
NAME = [1, 2]
def test():
global NAME
NAME = ‘自己‘
print(‘我爱‘,NAME)
test()
print(NAME)
NAME = [1, 2]
def test():
NAME = ‘自己‘
global NAME
print(‘我爱‘,NAME)
test()
print(NAME)


name = ‘大白‘
def cuoai():
name = ‘liu‘
def pianai():
global name
name = ‘wen‘
pianai()
print(name)
print(name)
cuoai()
print(name)

name = ‘大白‘
def cuoai():
name = ‘liu‘
def pianai():
nonlocal name
name = ‘wen‘
pianai()
print(name)
print(name)
cuoai()
print(name)

原文:https://www.cnblogs.com/dabai123/p/11031342.html