如何在Python中跨多个函数更新全局变量

时间:2019-10-11 14:04:57

标签: python

我有以下代码:

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

有任何提示吗?

2 个答案:

答案 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