kha*_*han 7 python python-module
我们一直使用python的导入机制来导入模块和变量以及其他东西.但是,有什么可以作为导出工作吗?喜欢:
我们从一个模块导入东西:
from abc import *
Run Code Online (Sandbox Code Playgroud)
那么我们可以出口吗?:
to xyz export *
Run Code Online (Sandbox Code Playgroud)
或者将a,b,c导出到program.py
我知道这个问题不是这里要问的典型问题..但只是好奇心..我检查了python控制台,并没有任何存在的'导出'..也许它存在一些不同的名称. .?
首先,导入要导出内容的模块,以便引用它.然后将要导出的内容指定为模块的属性:
# to xyz export a, b, c
import xyz
xyz.a = a
xyz.b = b
xyz.c = c
Run Code Online (Sandbox Code Playgroud)
要进行通配符导出,可以使用循环:
# 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)
Run Code Online (Sandbox Code Playgroud)
(请注意,我们在导入模块之前收集要导出的对象列表,这样我们就可以避免将引用导出到我们刚导入的模块中.)
这基本上是猴子修补的一种形式.它有它的时间和地点.当然,为了使它工作,执行"导出"的模块必须自己执行; 简单地导入将要修补的模块不会神奇地意识到某些其他代码会修补它.