在一个函数中定义的变量,在这个函数内部的另一个函数中需要使用 - Python

32 浏览
0 Comments

在一个函数中定义的变量,在这个函数内部的另一个函数中需要使用 - Python

我需要在一个函数中定义一个变量,并在原始函数内的另一个函数中使用它。例如,

def go_to_next_function():
    globvar = 0
    def add_one_to_globvar():
        global globvar  
        for i in range(10):
            globvar += 1
            print(globvar)
    add_one_to_globvar()
go_to_next_function()

现在我知道如果在所有函数的外部定义globvar,那么它将起作用,但我希望它在go_to_next_function()函数内部定义。有什么想法吗?谢谢。

0
0 Comments

问题的出现原因是在函数内定义的变量在函数内的另一个函数中被使用,但是无法直接访问该变量。这是因为在Python中,函数内的变量默认是局部变量,只能在该函数内部访问,无法在函数内的其他函数中访问。

解决方法是使用nonlocal关键字。在Python3.x中,可以使用nonlocal关键字来声明变量是来自外部函数的变量,而不是局部变量。这样,该变量就可以在函数内的其他函数中访问了。

在Python2.x中,非常不幸的是没有nonlocal关键字。因此,我们需要使用一种旧的技巧来解决这个问题,即将变量放入一个容器中,并对容器进行修改。这种技巧并不优雅,但是目前在Python2.x中是唯一的解决方法。

下面是一个使用容器解决该问题的示例代码:

def go_to_next_function():

closure_var = [0]

def add_one():

closure_var[0] += 1

print(closure_var[0])

add_one()

go_to_next_function()

感谢使用者指出他正在使用Python 3.x版本。在Python 3.x中,可以直接使用nonlocal关键字来解决该问题,不再需要使用容器来进行变量访问。

总结一下,函数内定义的变量在函数内的其他函数中无法直接访问。解决方法是在Python3.x中使用nonlocal关键字,在Python2.x中使用容器来存储变量并进行修改。

0