1. ホーム
  2. パイソン

[解決済み】Pythonで、関数の中でimportするとどうなるのか?[重複しています]。

2022-04-08 08:47:09

質問

Pythonのモジュールや関数を関数内にインポートすることの利点と欠点は、速度やメモリの効率に関してどのようなものでしょうか?

関数が実行されるたびに再インポートされるのでしょうか、それとも関数が実行されるかどうかにかかわらず、最初に一度だけなのでしょうか?

解決方法は?

<ブロッククオート

関数を実行するたびに再インポートされるのでしょうか?

いいえ。むしろ、Pythonモジュールは基本的にインポートされるたびにキャッシュされるので、2回目(または3回目、4回目...)のインポートは実際には全体のインポート処理を再び通過することを強制しません。 1

<ブロッククオート

関数の実行の有無に関わらず、最初に一度だけインポートされるのでしょうか?

いいえ、関数が実行された場合のみ、そしてその時にのみインポートされます。 2 , 3

メリットについては、人それぞれだと思います。もし、ある関数をごくまれにしか実行せず、そのモジュールを他のどこにもインポートする必要がないのであれば、それは かもしれません その関数の中だけでインポートするのは有益です。あるいは、名前の衝突やその他の理由で、そのモジュールやそのモジュールからのシンボルを利用したくない場合。 どこでも 特定の関数のみでインポートしたい場合もあります。(もちろん、常に from my_module import my_function as f というような場合です)。

一般的な実務では、おそらくそれほどメリットはないでしょう。実際、ほとんどの Python スタイルガイドでは、プログラマはモジュールファイルの先頭にすべての import を配置することを推奨しています。