【问题标题】:UnboundLocalError: local variable 'r' referenced before assignment [duplicate]UnboundLocalError:分配之前引用的局部变量“r”[重复]
【发布时间】:2013-02-28 17:34:59
【问题描述】:

我遇到了变量和函数的问题。这是一个简单的代码:

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

我知道这一定很简单。我开始使用函数而不是直接代码来编写脚本。

【问题讨论】:

  • 这个函数应该做什么?您的错误是 r 是全局的(不是本地的),但如果不知道程序的预期行为,我无法告诉您如何修复它。
  • 关于这个可能有 100 个问题。试过谷歌吗?

标签: python function


【解决方案1】:

如果你想在你的函数之外定义它,你应该重写你的函数以将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)

【讨论】:

    【解决方案2】:

    函数内的r与函数外的不一样,所以还没有设置。

    【讨论】:

      【解决方案3】:

      你应该把r = 0 放在函数里面。但如果你想要列表的长度,只需使用len(list)

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

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 2021-04-02
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        相关资源
        最近更新 更多