【发布时间】:2013-10-08 15:17:03
【问题描述】:
我有这个代码:
def r():
i += 1
return i
def f():
return x*a
i = 0
a=2
x=3
print f()
print r()
r() 出现此错误,f() 却没有:
~$ python ~/dev/python/inf1100/test.py
6
Traceback (most recent call last):
File "/home/marius/dev/python/inf1100/test.py", line 18, in <module>
print r()
File "/home/marius/dev/python/inf1100/test.py", line 2, in r
i += 1
UnboundLocalError: local variable 'i' referenced before assignment
为什么f() 可以使用函数外部定义的变量,而r() 不能?
【问题讨论】:
-
当您在函数中进行赋值时,您会在本地命名空间中创建一个 new 对象,否则您将使用全局命名空间中的变量。
-
请注意,99% 的情况下,如果您想写入全局变量,您就做错了 :)
标签: python function global-variables