变量的查找是由内向外的

 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()

 

posted on 2018-03-19 19:30  &&||!  阅读(140)  评论(0编辑  收藏  举报