# coding: utf-8
def func():
print 'x is', x
#x = 2 #if I add this line, there will be an error, why?
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
- 我不添加
global x
在func函数中,但仍然可以找到x
是50,为什么?
- 当我添加
x=2
func 函数中的一行,将会出现错误(UnboundLocalError: local variable 'x' referenced before assignment
), why?
这里的技巧是静态检测本地名称:
- 只要名字
x
未在函数中分配,引用x
决心在全球范围内
- 如果名字
x
被安排了anywhere在该函数中,Python 假设x
因此是一个本地名称到处在函数中。结果,第一行变成错误,因为本地名称x
在分配之前使用。
换句话说:分配的名称在函数中的任何地方都被视为本地名称,而不仅仅是在分配点之后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)