Python でファイルからすべての関数をインポートする

Muhammad Maisam Abbas 2023年1月30日
  1. Python の import *ステートメントを使用してファイルからすべての関数をインポートする
  2. import *アプローチを使用しない理由
Python でファイルからすべての関数をインポートする

このチュートリアルでは、Python のファイルからすべての関数をインポートする方法について説明します。

Python の import *ステートメントを使用してファイルからすべての関数をインポートする

import ステートメントは、Python コードでパッケージ、モジュール、およびライブラリをインポートするために使用されます。

コード内のファイルからすべてをインポートする場合は、import *を使用できます。2つの関数 square()cube() を含む functions.py という名前のファイルがあります。

from functions import *と記述して、両方の関数をコードにインポートできます。次に、コードで square() 関数と cube() 関数の両方を使用できます。

次のコードスニペットは、このアプローチの実用的な実装を示しています。

from functions import *

print(cube(3))

出力:

27

Python の import *ステートメントを使用して、コード内の functions.py ファイル内のすべての関数をインポートしました。

次に、functions.py ファイル内で cube() 関数を呼び出し、3 のキューブを出力しました。この方法は機能しますが、使用することはお勧めできません。

import *アプローチを使用しない理由

このアプローチでは暗黙の import ステートメントを使用しますが、Python では常に明示的な import ステートメントを使用することをお勧めします。

Python の禅によると、明示的は暗黙的よりも優れています。この声明には 2つの主な理由があります。

最初の理由は、プロジェクトのサイズが大きくなると、どの関数がどのファイルからのものであるかを理解するのが非常に難しく、複数のファイルから関数をインポートすることになります。他の誰かが私たちのコードを読んで、何が起こっているのかを完全に理解するのは特に難しいです。

これにより、コードのデバッグと保守が非常に困難になります。この問題は、次のコードスニペットで強調表示されています。

from functions import *
from functions1 import *
from functions2 import *

print(square(2))

出力:

4

上記のコードスニペットでは、コードを見ただけでは、元の square() 関数がどこで定義されているかを知ることはできません。square() 関数の起源を完全に理解するには、すべてのファイルを手動で調べる必要があります。

2 番目の主な理由は、複数のファイルに同じ名前の 2つの関数がある場合、インタープリターは最新の import ステートメントを使用することです。この現象は、次のコードスニペットで示されています。

from functions2 import *
from functions import *

print(hello())

print(hello())
print(hello())

出力:

hello from functions
hello from functions2
hello from functions2

2つのファイル functions.pyfunctions2.py の両方に hello() 関数が含まれています。

出力の最初の行で、functions.py ファイルをインポートしたため、このファイル内の hello() 関数が実行されます。出力の 2 行目と 3 行目には、hello() 関数を含む functions2.py ファイルもインポートしました。

したがって、新しい hello() 関数は最後の 2つの出力行で実行されます。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Import