【问题标题】:"Global variable" in multiple functions多个函数中的“全局变量”
【发布时间】:2021-09-17 11:52:26
【问题描述】:

我正在尝试使用全局变量收集数据,但不返回变量

def collect_result(result):    
    is_global = "Res_collected" in globals()
    if is_global == False: 
        global Res_collected
        Res_collected = []
    elif is_global == True:
        Res_collected.append(result)
    return

如何在另一个函数中使用或调用这个变量?

【问题讨论】:

  • 作为一名程序员,您应该非常、非常非常努力不使用全局变量。
  • 变量是全局的并且甚至不能保证被初始化?那是……大错特错。
  • 我同意@quamrana 之前的评论,即使我回答了这个问题。
  • 好的,谢谢,我知道我应该避免使用全局变量 ^^,我不想让许多返回的变量使脚本饱和

标签: python global-variables


【解决方案1】:

你不需要做任何特别的事情来读取另一个函数中的全局变量的值,你可以通过名字来引用它,例如print(Res_collected)

如果您想写入 到全局变量,您可以像在collect_result 函数中那样使用global 关键字来执行此操作。 This 是一个不错的入门教程。

正如其他人已经指出的那样,使用全局变量通常不是一个好主意。更好的选择是将您的结果集合作为参数传递给将要使用它们的任何函数。这样一来,每个函数正在读取或修改哪些数据就很清楚了。

全局变量可以隐藏有关正在使用哪些数据、在何处以及如何使用的重要线索,这使得代码更难理解,并可能导致进一步的其他问题。

【讨论】:

    【解决方案2】:

    按照@quamrana 和@deceze 的指示,使用globals 这是一个非常糟糕的主意,但如果您想尝试(请不要用于生产),我想下面的代码应该可以工作:

    >>> globals().setdefault('Res_collected', []).append(res)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多