在一个函数中定义的变量,在这个函数中的一个函数中需要 - Python
Variable defined in a function, needed within a function within this function - 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()
函数内部定义。有任何想法吗?谢谢
如果您使用 python3.x,您可以使用 nonlocal
关键字而不是 global
,您的功能应该可以工作。
如果您使用的是 python2.x,那么您会受困于旧技巧,例如将值放入容器中并改变 that。这是一个丑陋的 hack(这就是为什么首先添加 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()
我需要在函数内定义一个变量,并在原始函数内的函数中使用它。例如,
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()
函数内部定义。有任何想法吗?谢谢
如果您使用 python3.x,您可以使用 nonlocal
关键字而不是 global
,您的功能应该可以工作。
如果您使用的是 python2.x,那么您会受困于旧技巧,例如将值放入容器中并改变 that。这是一个丑陋的 hack(这就是为什么首先添加 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()