引用变量外部函数

时间:2015-03-05 11:51:14

标签: python python-3.x

我试图调用函数外部的值但出现错误。 这是代码的一部分:

for element in initial_valid_pos:   
    i = 0
    g = 1
    z = -1

    def loop():

        for element2 in valid_pos[1 + i]:

            if int(element) == (int(element2) + z):
                print(element)
            if int(element) == (int(element2) + g):
                print(element)
            else:
                pass
        i = i + 1
        z = z - 1
        g = g + 1
        loop()

正如你所看到的,首先给I赋值0,依此类推,然后我开始在里面循环,而在循环内部我希望增加iz的值, g

UnboundLocalError: local variable 'i' referenced before assignment

2 个答案:

答案 0 :(得分:1)

首先请注意,Python在很大程度上依赖于缩进。我想你知道的,但是你似乎已经在第一个loop()循环里面定义了for函数,这对我来说听起来令人生畏,至少可以说(我实际上甚至不知道是否允许这样做。

无论如何,你似乎不需要在你的例子中,所以只需对函数定义进行定义并将这些变量作为参数传递,例如:

def loop():
    for element2 in valid_pos[1 + i]:
        if int(element) == (int(element2) + z):
            print(element)
        if int(element) == (int(element2) + g):
            print(element)
        else:
            pass
        loop(i + 1, g + 1, z - 1)

for element in initial_valid_pos:   
    loop (0, 1, -1)

我不保证代码按预期工作,但对我来说仍然没有多大意义。

答案 1 :(得分:0)

替换:

def loop():

    for element2 in valid_pos[1 + i]:

使用:

def loop():
    global i, g, z
    for element2 in valid_pos[1 + i]: