すでに投稿されたコメントの多くを組み込むつもりです。
function
module を参照せずに にアクセスするにmy_file
は、次のいずれかを実行できます。
from my_file import function
また
from my_file import *
モジュールがどのように機能するかについてのより詳細な説明については、python modulesのドキュメントを参照してください。
最初のソリューションが推奨されるソリューションであり、2 番目のソリューションは多くの理由から推奨されません。
- 名前空間を汚染します
- これは保守性にとっては良い方法ではありません (特定の名前がどこにあるかを見つけるのが難しくなります。
- 通常、何がインポートされているか正確にはわかりません
- pyflakes などのツールを使用して、コード内のエラーを静的に検出することはできません
Python インポートは、Python がモジュール内のステートメントを実行するという点で、C や Java などの静的言語の #includes/imports とは異なる動作をします。したがって、2 つのモジュールが特定の名前 (または *) を相互にインポートする必要がある場合、ImportError
特定の名前をインポートするときや、単に期待される名前が定義されていないなど、循環参照の問題が発生する可能性があります (あなたの場合from ... import *
) 。 . 特定の名前を要求しない場合、名前が実際に使用するまでに定義されている限り、循環参照のリスクに遭遇することはありません。
またfrom ... import *
、すべてを取得することを保証するものではありません。__all__
Python モジュールに関するドキュメントに記載されているように、モジュールは名前を定義し、from ... import *
ステートメントが__all__
.