如何在Python中跨多个函数更新全局变量
我有以下代码:如何在Python中跨多个函数更新全局变量,python,Python,我有以下代码: counter = 0 def function_1(): func_2(counter) def func_2(counter): func_3(counter) def func_3(counter): counter += 1 我的目标是跟踪所有其他函数中func_3()的计数器增量 我试图使计数器成为全局的 counter = 0 def function_1(): global counter func_2(counter) def fun
counter = 0
def function_1():
func_2(counter)
def func_2(counter):
func_3(counter)
def func_3(counter):
counter += 1
我的目标是跟踪所有其他函数中func_3()
的计数器增量
我试图使计数器成为全局的
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()
有什么提示吗?我试图为你找到一个容易理解的解释,但它们似乎都很复杂 之所以将
计数器
视为函数中的局部变量,是因为您在函数定义中定义了它:def func_2(计数器):
要在函数中使用全局计数器
,需要如下操作:
counter = 0
def function_1():
func_2()
def func_2():
func_3()
def func_3():
global counter
counter += 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
如果计数器在全局范围内可用,为什么要将其作为参数传递?Int integer被复制,而不是引用func_3中计数器的可能副本是本地的,因为您将其作为参数传递,该参数是函数的本地参数。如果您想将其设置为全局,则需要将全局设置为func_3(就像在函数_1中一样),并删除参数(在()中的计数器)。King的jester评论很有用,其中有很多信息。谢谢@politinsa,我现在意识到我有多傻:-)谢谢,@politinsa评论让我意识到我的错误,如果计数器是全球范围的,为什么我要把它作为一个论据传递?:-)