关于python:UnboundLocalError:赋值前引用的局部变量’r’

UnboundLocalError: local variable 'r' referenced before assignment

本问题已经有最佳答案,请猛点这里访问。

我有一个关于变量和函数的问题。下面是一个简单的代码:

1
2
3
4
5
6
7
r = 0
list = ['apple','lime','orange']
def list_list(x):
    for i in x:
        r +=1
        print r
list_list(list)

错误:

1
UnboundLocalError: local variable 'r' referenced before assignment

我知道这一定很简单。我开始用函数代替直接代码编写脚本。


函数内的r与函数外的r不同,所以尚未设置。


如果要在函数之外定义它,则应重写函数,以将r作为参数:

1
2
def my_func(some_list, r=0):
    # do some stuff

基本上,您的范围有问题。如果在函数外部需要r,只需返回元组中的值:

1
2
3
4
5
6
7
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)


你应该把r = 0放在函数中。但是如果你想要列表的长度,只需使用EDOCX1[1]

还应尽量避免将变量命名为与列表等内置名称相同的名称。