0

私の問題は非常に簡単ですが、検索エンジンが「モジュール」という用語で曖昧であるため、良い答えを見つけることができません。私がしたいのは大まかにこれです:

モジュール:a.py

x = 2

モジュール:b.py

import a

ここで、修飾名を使用せずに(つまり、入力せずに、を使用して)xからアクセスできるようにします。私の状況では使用できません:ba.xx

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 に答える