Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中跨多个函数更新全局变量_Python - Fatal编程技术网

如何在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评论让我意识到我的错误,如果计数器是全球范围的,为什么我要把它作为一个论据传递?:-)