我有以下代码:
counter = 0
def function_1():
func_2(counter)
def func_2(counter):
func_3(counter)
def func_3(counter):
counter += 1
我的目标是在所有其他功能中跟踪func_3()
中的计数器增量。
我试图做计数器global
counter = 0
def function_1():
global counter
func_2(counter)
def func_2(counter):
func_3(counter)
def func_3(counter):
counter += 1
但不起作用,计数器增量仅在func_3()
本地
有任何提示吗?
答案 0 :(得分:3)
我试图为您找到一个易于理解的解释,但它们似乎都很复杂。
将counter
视为函数内部的局部变量的原因是因为您在函数定义def func_2(counter):
中对其进行了定义。
要在函数内使用全局counter
,您需要这样做:
counter = 0
def function_1():
func_2()
def func_2():
func_3()
def func_3():
global counter
counter += 1
答案 1 :(得分:1)
您可以使用globals().update(locals())
,例如:
counter = 0
def function_1():
func_2()
def func_2():
func_3()
def func_3():
counter += 1
globals().update(locals())
或使用global
方法
counter = 0
def function_1():
func_2()
def func_2():
func_3()
def func_3():
global counter
counter += 1