python - 为什么使用全局变量给出未定义?
问题描述
我似乎无法弄清楚我的变量做错了什么。基本上我的 main.py 中有一个变量,我需要在我的 function.py 中的一个函数中进行调整。但是我收到一个错误,即变量尚未定义。
我究竟做错了什么?
主要.py:
from function.functions import *
loaded_tables = []
do_something()
函数.py:
def do_something():
global loaded_tables
loaded_tables.append('test')
解决方案
Python 中的全局变量并不是真正的全局变量,它们是模块范围的。这意味着您可以loaded_tables
从模块中的任何功能访问main
。如果要在任何其他模块中使用它,则必须导入它。在您的情况下,这会给您一个循环导入,因此无法正常工作。
正如@klaus-d 在他们的评论中所建议的那样,避免全局变量并简单地将参数传递给函数是一种很好的做法。
如果您真的想使用全局变量,您可以在单独的模块(例如app_globals.py
)中定义它们,并在需要访问它们时从那里导入它们。
推荐阅读
- c# - 如何实现反射以获取基于通用枚举的对象字段
- docker - 运行 prisma init 时,Prisma 不生成文件
- flutter - Flutter TextPainter - 圆内的中心字符
- node.js - 打印数组时奇怪的 node.js console.log() 输出行为
- angular - 在 Angular/Electron 应用程序中使用 MediaRecorder 对象
- serenity-platform - Serenity 表单默认值
- python - 当我单击 html 上的“viewall”提交按钮时,它会转到“RestInfo url”并在错误 Django 中显示 NoReverseMatch
- python - Django上传的文件不处理
- javascript - 错误时使用错误消息更改状态
- node.js - nodejs mongodb 无法在 docker 中连接。\