码迷,mamicode.com
首页 > 其他好文 > 详细

函数作用域理解

时间:2016-04-20 00:35:47      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

函数中的作用域搜索顺序:L---E---G---B

L-----local,局部名字空间,即局部变量,在函数内部找

E-----enclosing,直接外围空间,

G-----global,全局名字空间,即全局变量

B-----builtin,内建名字空间

1 x = 10
2 def f():
3     x +=  2
4     print(x)    #结果报错,由于函数内x被赋值,则认为是局部变量,在函数内寻找,
5 f()             #找到结果是x还没被定义,报错
1 x = 10
2 def f():
3     global x   #定义x为全局变量
4     x +=  2     #则x会往外部找,找到10,所以执行结果12
5     print(x)
6 f()    
 1 x = 9
 2 def bb():
 3     global x        #定义全局变量
 4     print(x,1)      #执行结果9
 5     x = 8
 6     def cc():
 7         global x  #定义全局变量
 8         x += 1    #赋值了认为是内部变量,在内部查找,找到x被定义全局变量,到外面拿到9
 9         print(x,2)  #执行结果9
10     cc()
11 bb()
12 ##########################
13 x = 9
14 def bb():
15     global x
16     print(x,3)   #执行结果9
17     x = 8
18     def cc():
19         global x     #这个定义可有可无
20         print(x,4)   #执行结果8,没赋值则直接向外找
21     cc()
22 bb()

 

函数作用域理解

标签:

原文地址:http://www.cnblogs.com/repo/p/5410809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!