码迷,mamicode.com
首页 > 编程语言 > 详细

python 作用域

时间:2015-09-02 01:53:51      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

python能够改变变量作用域的代码段是def、class、lamda.  ( 模块,类以及函数才会引入新的作用域 )

if/elif/else、try/except/finally、for/while 并不能涉及变量作用域的更改,也就是说他们的代码块中的变量,在外部也是可以访问的

变量搜索路径是:本地变量->全局变量

注意以下例子,跟js很像:

 

i = 0
def f():
  print i
  i = 0
f()

 

运行结果显示:UnboundLocalError: local variable ‘i‘ referenced before assignment。

因为在函数 f() 中出现了变量 i=0,编译器会认为i属于局部变量(local),根据LEGB规则,先搜索local变量,则在 print i 语句时候,局部变量 i 还没有赋值,故抛出异常。

 

 

i = 0
def f():
  i += 1
  print i
f()
 
 

以上同样会报错,i += 1 等价于 i = i + 1,因为 x= 是一个定义变量的行为,则 i + 1 中的 i 实际上市未定义的

python 作用域

标签:

原文地址:http://www.cnblogs.com/vineleven/p/4777452.html

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