首页 > 解决方案 > 为什么使用全局变量给出未定义?

问题描述

我似乎无法弄清楚我的变量做错了什么。基本上我的 main.py 中有一个变量,我需要在我的 function.py 中的一个函数中进行调整。但是我收到一个错误,即变量尚未定义。

我究竟做错了什么?

主要.py:

from function.functions import *

loaded_tables = []

do_something()

函数.py:

def do_something():

  global loaded_tables

  loaded_tables.append('test')

标签: pythonpython-3.xglobal-variables

解决方案


Python 中的全局变量并不是真正的全局变量,它们是模块范围的。这意味着您可以loaded_tables从模块中的任何功能访问main。如果要在任何其他模块中使用它,则必须导入它。在您的情况下,这会给您一个循环导入,因此无法正常工作。

正如@klaus-d 在他们的评论中所建议的那样,避免全局变量并简单地将参数传递给函数是一种很好的做法。

如果您真的想使用全局变量,您可以在单独的模块(例如app_globals.py)中定义它们,并在需要访问它们时从那里导入它们。


推荐阅读