变量的查找是由内向外的
1 # 全局变量 2 name = 'yuan' 3 # 定义函数 4 def change1(): 5 print(name) # yuan 6 # 调用函数 7 change1() 8 print(name) # yuan 9 10 print('################################') 11 12 # 全局变量 13 name = 'yuan' 14 # 定义函数 15 def change1(): 16 name = 'Lucy' # Lucy 17 print(name) 18 # 调用函数 19 change1() 20 print(name) # yuan
变量的使用、先声明、后使用
局部作用域内不能修改全局变量【解释错误】
coun+= 1
1 coun = 10 2 def f(): 3 # 解释二、局部作用域内有coun,应先声明,后使用 4 print(coun) 5 # 解释一、局部作用域内不能修改全局变量【错误】 6 # coun = 2 7 8 # coun+=1,等同于上面,两部操作 1、【使用】查找 2、【声明】修改 9 # coun+= 1 10 f()
在局部作用域内定义全局变量
1 # 全局变量 2 name = 'yuan' 3 def change(): 4 # 定义此处的name为全局变量 5 global name 6 name = 'Lucy' 7 print(name) # Lucy 8 9 change() 10 print(name) # Lucy
列表
1 name = ['yuan','Lucy'] 2 3 def change2(): 4 name.append('Lucy') 5 print(name) # ['yuan', 'Lucy', 'Lucy'] 6 7 change2()
定于局部变量为上一级变量
嵌套函数:函数套函数
1 name = 'yuan' 2 def sd(): 3 name = 'lili' 4 def df(): 5 # 全局变量 6 # global name 7 8 # 上一级的变量 9 nonlocal name 10 11 name = 'yuli' 12 df() 13 print(name) 14 15 print(name) # yuan 16 sd() # yuli 17 print(name) # yuan
向前引向
1 # 向前引用 2 def a(): 3 print("fun a") 4 b() 5 # a()出错 6 def b(): 7 print("fun b") 8 a()