0

我的问题很简单,但我找不到一个好的答案,因为搜索引擎对“模块”这个词模棱两可。我想做的大致是这样的:

模块:a.py

x = 2

模块:b.py

import a

现在,我希望能够在不使用限定名称的情况下进行访问xb即不输入a.x,只需使用x)。在我的情况下,我不能使用:

from a import x

因为我不知道a将包含哪些元素。我不能使用

from a import *

两者都不。有没有简单的方法来合并或加入模块(我的意思是对象模块)?

4

1 回答 1

1

不是一个好主意,但您可以使用:

globals().update(vars(a))

将模块中定义的所有名称添加a到本地命名空间。这几乎与from a import *. from a import *要准确模拟,不使用from a import *自身,您必须使用:

globals().update(p for p in vars(a).items() if p[0] in getattr(a, '__all__', dir(a)))

您通常只会使用x = a.xor from a import x

如果您正在使用zipimport,则无需执行任何此操作。只需将存档路径添加到您的sys.path

import sys
sys.path.insert(0, '/path/to/archive.zip')
from test import x
于 2013-02-07T14:19:10.877 回答