4

私は比較的 Python に慣れていないので、Python 開発に関して強固な基盤を構築するために、"Pythonic" な方法を学ぼうとしています。おそらく私が達成したいのはPythonではありませんが、それでもこの問題を解決する「正しい」方法を見つけようとしています。

モジュールを作成しているアプリケーションを構築しています。私のモジュールには 7 つの異なる .py Python ファイルがあり、すべて 3 つの異なる同じものをインポートしていることに気付きました。したがって、これらすべてのファイルはこれらのインポートを共有します。

それらを削除して、これらのインポートをフォルダー内の空のinit .py に挿入しようとしましたが、うまくいきませんでした。

可能であれば、これらのインポートはこれらすべてのモジュール ファイルで必要になるため、各ファイルに 1 つずつインポートすることは望ましくありません。

共通インポートを実行するにはどうすればよいですか?

どうもありがとう、親切な助けに本当に感謝しています。

4

2 に答える 2

4

Zen of Python が述べているように、「明示的は暗黙的よりも優れています」。これは良い例です。

モジュールの依存関係をインポートに明示的にリストすることは非常に便利です。これは、ファイル内のすべてのシンボルを単純なテキスト検索でその起源までたどることができることを意味します。たとえば、ファイル内で を検索するsome_identifierと、ファイル内に定義が見つかるか、またはfrom some_module import some_identifier. への直接参照を使用すると、さらに明白になりsome_module.some_identifierます。(これは、実行してはいけない理由の 1 つでもありますfrom module import *。)

上記のプロパティを失わずにできることの 1 つは、3 つの共有モジュールを 4 番目のモジュールにインポートすることです。

#fourth.py
import first
import second
import third

それから...

#another.py
import fourth

fourth.first.some_function()
#etc.

あなたがそれを我慢できないなら (結局のところ、呼び出しがより冗長になります)、3 つのインポートの重複は本当に問題ありません。

于 2012-12-29T20:28:57.900 に答える
3

私はDrewVに同意します、それは完全にpythonicです

ファイル1:

import xyz

import abc

...

ファイル 2:

import xyz

ほぼ同じ質問が次のリンクでも取り上げられています。

python 共通モジュールの複数のインポート

説明されているように、Python はモジュールのロードを最適化するジョブを実行するため、複数の import ステートメントを記述しても、モジュールが 1 回だけロードされるため、パフォーマンスの低下を心配する必要はありません。実際、各ファイルのすべてのインポートを一覧表示すると、各ファイルが何に依存しているかが明確になります。

また、インポートが名前空間とどのように相互作用するかについては、以下を参照してください。

モジュールとグローバル変数間の Python インポート

于 2012-12-29T20:06:59.820 に答える