是否有像Python导出的东西?

时间:2013-01-04 19:23:50

标签: python python-module

我们一直使用python的导入机制来导入模块和变量以及其他东西。但是,有什么可以作为导出工作吗?像:

我们从模块导入内容:

from abc import *

我们可以像?:

一样导出
to xyz export *

或     将a,b,c导出到program.py

我知道这个问题不是这里要问的一个典型问题..但只是好奇..我检查了python控制台,没有任何东西作为'export'存在..也许它存在一些不同的名字..?

1 个答案:

答案 0 :(得分:8)

首先,导入要导出内容的模块,以便引用它。然后将要导出的内容指定为模块的属性:

# to xyz export a, b, c
import xyz
xyz.a = a
xyz.b = b
xyz.c = c

要进行通配符导出,可以使用循环:

# to xyz export *
exports = [(k, v) for (k, v) in globals().iteritems() if not k.startswith("_")]
import xyz
for k, v in exports: setattr(xyz, k, v)

(请注意,我们在导入模块之前收集要导出的对象列表,这样我们就可以避免将引用导出到我们刚导入的模块中。)

这基本上是猴子修补的一种形式。它有它的时间和地点。当然,为了使它工作,执行“导出”的模块必须自己执行;简单地导入将要修补的模块不会神奇地意识到其他某些代码会修补它。