Python:引用函数内的全局变量

时间:2018-01-28 07:32:09

标签: python global-variables counter

我遇到了一个无法从函数内部引用golbal变量的问题。它总是抛出一个错误,说"局部变量' variable_name'在转让之前引用"。 我写了一个简单的代码,在尝试返回两个数字的乘积数组时会抛出相同的错误。

table=[]
counter = 0
def multiplier(num):

    if counter >9:
        print (table) 
    else:
        table.append(num*counter)
        counter +=1
        multiplier(num)

multiplier (5)

我在这里做错了什么?我的原始代码要求一次又一次地调用该函数,因为我想使用计数器来跟踪它被调用的次数。这意味着我无法初始化函数内部的计数器,因为一旦调用了函数并且因为计数器在函数内部被初始化,它将被重置。

4 个答案:

答案 0 :(得分:1)

在功能块的第一行使用global关键字。

像:

def multiplier(num):
    global counter
    ...

答案 1 :(得分:1)

您必须声明

global counter

在函数中访问全局变量,而不是创建同名的局部变量。但更好的解决方案是定义一个类。

答案 2 :(得分:1)

使counter函数的参数具有默认值零。当你递归时,在计数中加一个。

table=[]
def multiplier(num, counter = 0):
    if counter >9:
        print (table) 
    else:
        table.append(num*counter)
        multiplier(num, counter+1)
multiplier(5)

这是您的函数重构为返回值而不是打印它。

table=[]
def multiplier(num, counter = 0):
    if counter >9:
        return table 
    else:
        table.append(num*counter)
        return multiplier(num, counter+1)
print(multiplier(5))

答案 3 :(得分:0)

您可以使用global关键字来使用全局变量。请注意以下几点:

  1. 仅在更改全局变量值时使用global关键字。

  2. 如果仅使用变量名称读取(此处不需要全局变量定义),则可以使用global变量。

  3. 示例:

    var = 10
    
    def change_var():
        global var
        var = 2
        return var
    
    def read_var():
        print "Variable is:",var
    

    希望这会有所帮助。