1

すべての外部モジュールを 1 つのファイルにインポートしてから、そのファイルからインポートすることを考えています。このようにして、外部モジュールを交換したい場合は、1 つのファイルを編集するだけです。

ディレクトリの例:

# django project
...
app1
    imports.py
app2
    utils.py
app3
    utils.py

だから app1.imports.py にある

from app2 import utils as ALIAS

次に、app1 のすべてのモジュールが app1.imports.py から ALIAS をインポートします。このように、app3.utils を使用したい場合は、app1.imports.py で 1 つの変更を加えるだけです。

問題は、これが良い考えかどうかを知るのに十分なほどPythonを知らない/理解していないことです。これを行うことの長所と短所は何ですか?私はこれをやっている人をまったく見ないので、それは良い考えではないと思いますか? なぜ?

4

1 に答える 1

0

Python ドキュメントhttp://docs.python.org/2/tutorial/modules.html#more-on-modulesから:

モジュールは他のモジュールをインポートできます。... インポートされたモジュール名は、インポート モジュールのグローバル シンボル テーブルに配置されます。

すべての可能なモジュールの名前空間を単一のモジュールにエイリアス (ALIAS_1、ALIAS_2、...) としてインポートし、必要に応じて後者のモジュールの名前空間をインポートすることは完全に可能です。

例を見てみましょう:

x.py    # Contains nothing

y.py    # Contains a single line which imports x as ALIAS
    import x as ALIAS

# Inside an interpreter session
>>> import x, y
>>> dir(x)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> dir(y)
['ALIAS', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> dir(x) == dir(y.ALIAS)
True

インポートされたモジュールの名前空間をインポートするモジュールの名前空間にマージしない限り、副作用は見られません。

于 2013-03-08T07:35:26.613 に答える