モジュールをインポートする Python 例を挙げて
⚡ スマートサマリー
インポート Python モジュールを使用すると、あるファイルで定義された変数、関数、クラスを別のファイルで再利用できます。モジュールは単なる .py ファイルですが、パッケージは __init__.py ファイルでマークされたディレクトリ内に、関連するモジュールをグループ化します。

以下のセクションでは、モジュール、パッケージ、さまざまなインポートスタイル、絶対インポートと相対インポートの仕組みについて説明します。 Python.
モジュールとは Python?
モジュールは、 Python コード。コードは、変数、関数、または定義済みのクラスの形式で記述できます。ファイル名がモジュール名になります。
たとえば、ファイル名が guru99.py の場合、モジュール名は次のようになります。 guru99。 モジュール機能を使用すると、コードを XNUMX つのファイル内にすべてを記述するのではなく、複数のファイルに分割できます。
何ですか Python モジュールをインポートしますか?
ファイルはモジュールとみなされます Pythonモジュールを使用するには、以下の方法でインポートする必要があります。 import キーワード。ファイル内に存在する関数または変数は、モジュールをインポートすることで別のファイルで使用できます。この機能は、他の言語でも利用可能です。 TypeScript, Javaスクリプト、 Java、ルビーなど
モジュールを作成してインポートする方法 Python?
次に、モジュールを作成し、それを別のファイルにインポートします。
スクリーンショットに示すように、モジュールを作成してインポートするフローは次のとおりです。
モジュールを作成するには、以下の手順に従ってください。 Python.
コードのテストに使用されるフォルダー構造は次のとおりです。
modtest/ test.py display.py
ステップ1) test.pyという名前のファイルを作成します。
ステップ2) test.py 内で、display_message() という関数を作成します。
Def display_message():
return "Welcome to Guru99 Tutorials!"
ステップ3) 次に、別のファイル display.py を作成します。
ステップ4) display.py の中に、以下に示すように test.py モジュールをインポートします。
import test
インポート時には、test.py を指定する必要はなく、ファイル名だけを指定すれば十分です。
ステップ5) その後、display.py 内で test.py の display_message() 関数を呼び出すことができます。その際、module_name.function_name を使用する必要があります。
たとえば、test.display_message()。
Import test
print(test.display_message())
ステップ6) display.pyを実行すると、次のようになります。 出力:
Welcome to Guru99 Tutorials!
クラスのインポート Python
先ほど、関数を持つシンプルなモジュールを見てきました。ここでは、クラスを作成し、別のファイル内でそのクラスを参照する方法を見ていきます。
コードをテストするためのフォルダ構造は以下のとおりです。
myproj/ Car.py display.py
次のコードを含む Car.py というファイルを作成します。
ファイル名 : Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Car.py ファイルには、brand_name、model、manu_year という属性があります。クラス内で定義されている関数は、car_details()、get_Car_brand()、get_Car_model() です。
次に、ファイル Car.py を、display.py という別のファイルのモジュールとして使用してみましょう。
ファイル名 : 表示.py
import Car car_det = Car.Car("BMW","Z5", 2020) print(car_det.brand_name) print(car_det.car_details()) print(car_det.get_Car_brand()) print(car_det.get_Car_model())
出力:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
つまり、Carモジュールを使用することで、Car.py内のすべての変数と関数にアクセスできます。
from を使用してモジュールをインポートする
モジュールのコード全体をインポートする代わりに、モジュールから必要な関数と変数名のみをインポートするなど、モジュールのごく一部だけをインポートすることも可能です。
特定のものだけをインポートしたい場合は、「from」キーワードを使用して必要なものだけをインポートできます。
したがって、構文は次のとおりです
from module import your function_name , variables,... etc.
コードのテストに使用されるフォルダー構造は次のとおりです。
modtest/ test.py display.py
test.pyには、以下に示す2つの関数があります。
ファイル名 : test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
次に、display_message() 関数を使用します。インポートする関数または変数は、以下のように直接アクセスできます。
ファイル名 : 表示.py
from test import display_message print(display_message())
出力:
Welcome to Guru99 Tutorials!
ここで、display_message1() 関数を使用すると、以下に示すように、関数が定義されていないというエラーが発生します。
from test import display_message print(display_message1())
出力:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
モジュールからすべてをインポートする
importコマンドを使用すると、importコマンドの後にモジュール名(つまり、使用するファイル名またはライブラリ名)を指定することで、モジュール全体をインポートできます。
構文:
Import module
またはを使用して
from module import *
コードのテストに使用されるフォルダー構造は次のとおりです。
modtest/ test.py display.py
以下はtest.py内のコードの詳細です。
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
インポートモジュールの使用
インポートしたモジュール名だけでは、モジュール内の変数や関数を参照することはできません。参照するには、変数や関数の前にモジュール名を付ける必要があります。
例:
ファイル名 : 表示.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
モジュール名「test」は、モジュール「test」内の関数や変数を参照するために使用されます。
出力:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
import の使用 *
を使用した例を見てみましょう 輸入 *。 使い方 輸入 *の場合、以下の例に示すように、関数と変数に直接アクセスできます。
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
出力:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
dir( ) 関数
dir() は組み込み関数です Pythondir() は、指定されたオブジェクトの組み込みプロパティを含む、すべてのプロパティとメソッドを返します。
したがって、モジュールに対して dir() を使用すると、モジュール内に存在する変数と関数を取得できます。
以下は、モジュールに対する dir() の動作例です。Car.py というクラスがあるので、Car をインポートして dir() に代入し、出力結果を見てみましょう。
コードをテストするフォルダー構造は次のようになります。
test prop/ Car.py test.py
ファイル名: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
ファイル名: test.py
import Car class_contents = dir(Car) print(class_contents)
出力には、クラスの名前と Car.py で定義されているすべての関数が表示されます。
また、組み込みモジュールのdir()を使用することもできます。 Python同じことを試してみましょう。 JSON 以下の例に示すようにモジュールを使用します。これにより、モジュールで使用可能なすべてのプロパティとメソッドが表示されます。 JSON モジュールを開きます。
Import json
json_details = dir(json)
print(json_details)
出力:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa d', 'loads', 'scanner']
エクストラ
パッケージとは、その中に定義されているすべてのモジュールを含むディレクトリです。 Python インタプリタはそれをパッケージとして扱います。ディレクトリには __init__.py ファイルが必要です。__init__.py によってディレクトリがパッケージになります。これから作業するパッケージの構成は以下のとおりです。
パッケージの名前は、 マイパッケージパッケージの使用を開始するには、mypackage/ という名前のディレクトリを作成します。そのディレクトリ内に、__init__.py という名前の空のファイルを作成します。さらに、module1.py、module2.py、module3.py という 3 つのファイルを作成し、スクリーンショットに示すように関数を定義します。以下に、module1.py、module2.py、module3.py の詳細を示します。
module1.py
def mod1_func1(): print("Welcome to Module1 function1") def mod1_func2(): print("Welcome to Module1 function2") def mod1_func3(): print("Welcome to Module1 function3")
module2.py
def mod2_func1(): print("Welcome to Module2 function1") def mod2_func2(): print("Welcome to Module2 function2") def mod2_func3(): print("Welcome to Module2 function3")
module3.py
def mod3_func1(): print("Welcome to Module3 function1") def mod3_func2(): print("Welcome to Module3 function2") def mod3_func3(): print("Welcome to Module3 function3")
その パッケージ 使用準備が整いました。test.py に以下のように記述するように、任意のファイル内でパッケージを呼び出してください。
ここでは、mypackage.module1 がインポートされ、次のようなエイリアス名が付けられます。 モード1同様に、mypackage に含まれる他のモジュール module2.py と module3.py も使用できます。
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
出力:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
先ほど、内部に関数を含むシンプルなモジュールを使ってパッケージの動作を説明しました。プロジェクトによっては、サブパッケージ(つまり、クラスが定義されたモジュールを含むサブフォルダ)を持つパッケージを作成することもできます。
Python モジュール検索パス
実行中に、 Python 伝わってくる インポートモジュール名すると、インタープリタはモジュールを探そうとします。組み込みモジュールリストでモジュールを検索し、次に sys.path で定義されているすべてのディレクトリを検索します。
要約すると、インタープリターはモジュールを見つけるために次の検索を実行します。
- 現在のディレクトリ内。
- 組み込みモジュール一覧に。
- sys.path ディレクトリ内。
sysモジュールをインポートしてsys.pathを出力すると、sys.pathの詳細を取得できます。以下に示すように、ディレクトリの一覧が表示されます。
importsys
print(sys.path)
出力:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
要件に応じてパスを変更し、ディレクトリを保持することもできます。
インポートでのモジュールエイリアスの使用
モジュール名にエイリアス名を付けることで、モジュール名をより短い形式に変換することもできます。エイリアスは、 as キーワード。
構文:
import filename as alias name
コードをテストするフォルダー構造は次のようになります。
Mod test/ test.py display.py
以下はtest.py内のコードです。
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
次に、display.py で test.py のエイリアスを使用します。
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
テストモジュールに使用されるエイリアスはtです。したがって、test.pyの関数と変数は、エイリアスtを使用して参照できます。
出力:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
絶対インポートと相対インポート Python
ファイルを別のファイル内のモジュールとしてインポートする方法がわかりました。 フォルダー内で利用可能なファイルを管理する方法を見てみましょう。 フォルダー内のファイルは、絶対インポートまたは相対インポートを使用してインポートできます。
以下に示すようなプロジェクト フォルダー構造があるとします。
ルートフォルダはmyproject/です。その中にpackage1とpackage2という2つのサブフォルダがあります。
package1フォルダには、module1.pyとmodule2.pyという2つのモジュールが含まれています。
フォルダー package2 には、3 つのクラス myclass.py、module4.py を含むサブパッケージ subpkg、および最後の moduleXNUMX.py があります。
- module1.pyには、myfunc1という関数があります。
- module2.pyには、myfunc2という関数があります。
- module3.pyには、myfunc3という関数があります。
- module4.pyには、myfunc4という関数があります。
絶対インポートの使用
絶対パスでインポートする場合は、プロジェクトのルートフォルダからモジュールの完全なパスを追加する必要があります。
それでは、各モジュールに存在する関数を参照するために、絶対インポートをどのように利用するかを見ていきましょう。
関数 myfunc1 を使用するには、次のようにインポートする必要があります。
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
関数 myfunc3 を使用するには、次のようにインポートする必要があります。
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
絶対インポートを使用する利点と欠点
絶対インポートを使用する利点は次のとおりです。
- 簡単に tracコードチェックのためにモジュールを戻してください。
- 使いやすく、とても簡単です。
- プロジェクトが別のパスに移動された場合でも、インポート内容は変更されません。
絶対インポートを使用するデメリット
絶対インポートを使用する際のデメリットは以下のとおりです。
- モジュールがネストされていて、モジュール名が長い場合、インポートパスが非常に長くなる可能性があります。
相対インポートの使用
上記と同じフォルダ構造を前提として、相対インポートを使用して同じファイルをインポートする方法を見ていきましょう。
相対インポートでは、インポートするモジュールは現在の場所、つまりインポート文が存在する場所からの相対的な位置になります。
構文
相対インポートでは、次を使用してインポートするときにモジュール名の前にピリオド (.) を追加する必要があります。 from.
モジュールが現在の位置から1つ上の階層にある場合、モジュール名の前にピリオド(..)が2つ付きます。
上記のフォルダ構造図を参照すると、参照する必要のある以下のモジュールとその機能があります。
- module1.pyには、myfunc1という関数があります。
- module2.pyには、myfunc2という関数があります。
- module3.pyには、myfunc3という関数があります。
- module4.pyには、myfunc4という関数があります。
関数 myfunc1 を使用するには、次のようにインポートする必要があります。
from .module1 import myfunc1
関数 myfunc3 を使用するには、次のようにインポートする必要があります。
from .subpkg.module3 import myfunc3
相対輸入のメリット
- 相対インポートの操作は簡単です。
- 現在の場所からのインポートは、絶対インポートと比較して短縮できます。
相対輸入のデメリット
- 相対インポートを使用すると、 tracコードが存在する場所に戻ります。



