【发布时间】:2021-02-08 16:28:28
【问题描述】:
如何从模块返回 python 字典?
我包含了我的代码的精简版本。
我有 main.py 运行程序的文件,它从另一个文件 import_gdb.py 导入 *。
from copa_import import *
def get_data(self):
gdb_path = "<some file path>"
import_gdb(gdb_path)
在导入的copa_import.py 中,我在import_gdb() 中构建了一个字典。
imports ...
layers = {}
def import_gdb(gdb_path):
global layers
try:
<code to make the dictionary>
layers = <dictionary>
except:
print('failed to make dictionary')
return layers
我已经分配了一个全局变量,但我认为它只能在模块内本地访问?
我已返回 layers 如何在 main.py 中使用/访问它?
我已经在谷歌上搜索了几天,试图找到一个关于如何做到这一点的明确解释。我可能缺乏一些基本的了解,我欢迎指导。
【问题讨论】:
-
您通常不需要将
global用于常规的python 任务,并且它不会实现您在此处尝试执行的操作。你可以做import copa_import,你可以通过copa_import.layers和copa_import.import_gdb('my/path)访问函数和层 -
您不需要将
layers设为全局。您从import_gdb()退回它。在get_data()中分配返回值。returned_layers = import_gdb(gdb_path) -
在使用全局变量之前,要知道global variables are evil!
-
谢谢你,我一直很困惑,现在我可以将我愚蠢的长脚本切割成可重用的模块。谢谢。