繁体   English   中英

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

[英]Python: Referencing global variables inside a function

我遇到了无法从函数内部引用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)

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

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

喜欢:

def multiplier(num):
    global counter
    ...

你必须声明

global counter

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

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))

您可以使用global关键字来使用global变量。 请记住以下几点:

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

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

例:

var = 10

def change_var():
    global var
    var = 2
    return var

def read_var():
    print "Variable is:",var

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM