UnboundLocalError:局部变量'r'在赋值前被引用

-1 投票
3 回答
13837 浏览
提问于 2025-04-17 18:52

我在变量和函数方面遇到了一些问题。这里有一段简单的代码:

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)

撰写回答