函数中定义的变量,在此函数中的函数内需要 - Python

时间:2016-08-25 13:32:53

标签: python function global-variables variable-assignment

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

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()函数内定义。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

如果您使用的是python3.x,则可以使用nonlocal关键字而不是global,并且您的功能应该有效。

如果您使用的是python2.x,那么您就会遇到旧的黑客攻击,比如将值放入容器并改变那个。这是一个丑陋的黑客(这就是为什么nonlocal首先被添加的原因):

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