为什么使用全局变量会给出 undefined?

eur*_*eka 0 python global-variables python-3.x

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

我究竟做错了什么?

主要.py:

from function.functions import *

loaded_tables = []

do_something()
Run Code Online (Sandbox Code Playgroud)

函数.py:

def do_something():

  global loaded_tables

  loaded_tables.append('test')
Run Code Online (Sandbox Code Playgroud)

小智 6

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

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

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