UnboundLocalError:局部变量'r'在赋值前被引用
我在变量和函数方面遇到了一些问题。这里有一段简单的代码:
r = 0
list = ['apple','lime','orange']
def list_list(x):
for i in x:
r +=1
print r
list_list(list)
错误:
UnboundLocalError: local variable 'r' referenced before assignment
我知道这一定是个简单的问题。我开始用函数来写我的脚本,而不是直接写代码。
3 个回答
1
你应该把 r = 0
放在函数里面。不过如果你想知道列表的长度,可以直接用 len(list)
。
另外,尽量不要把变量命名成和内置名称一样,比如用 list 这个名字。
2
函数内部的 r
和函数外部的 r
不是同一个东西,所以函数内部的 r
还没有被设置。
3
如果你想在函数外部使用r
,你应该把它作为参数传递给你的函数:
def my_func(some_list, r=0):
# do some stuff
其实,你遇到的问题是作用域的问题。如果你需要在函数外部使用r
,可以把它的值放在一个元组里返回:
def my_func(some_list, r=0):
# do some stuff
return new_list, r
my_list = [1,2,3,4,5]
different_list, my_outside_r = my_func(some_list, 0)