例を使用して Python でモジュールをインポートする
Python のモジュールとは?
モジュールは、Python コードを含むファイルです。コードは、定義された変数、関数、またはクラスの形式にすることができます。ファイル名がモジュール名になります。
たとえば、ファイル名が guru99.py の場合、モジュール名は guru99 になります。 .モジュール機能を使用すると、すべてを 1 つのファイルに書き込むのではなく、コードを複数のファイルに分割できます。
このチュートリアルでは、次のことを学びます:
- Python のモジュールとは?
- Python インポート モジュール
- Python でモジュールを作成してインポートする方法は?
- Python でクラスをインポートする
- from を使用してモジュールをインポートする
- モジュールからすべてをインポートする
- インポート モジュールの使用
- インポート * の使用
- dir( ) 関数
- パッケージ
- PythonModuleSearchPath
- インポートでのモジュール エイリアスの使用
- Python での絶対インポートと相対インポート
- AbsoluteImport の使用
- RelativeImport の使用
Python インポート モジュールとは?
ファイルは、Python ではモジュールと見なされます。モジュールを使用するには、インポートを使用してインポートする必要があります キーワード。モジュールをインポートすることにより、ファイル内に存在する関数または変数を別のファイルで使用できます。この機能は、typescript、JavaScript、java、ruby などの他の言語でも利用できます。
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 内に moduletest.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 という別のファイルのモジュールとして使用してみましょう。
ファイル名 :display.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() 関数が必要です。インポートする関数または変数には、以下に示すように直接アクセスできます:
ファイル名 :display.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!"
インポート モジュールの使用
インポート モジュール名だけを使用して、モジュール内の変数と関数を参照するには、モジュール名を前に付ける必要があります。
例
ファイル名 :display.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() は Python の組み込み関数です。 dir() は、指定されたオブジェクトの組み込みプロパティを含む、すべてのプロパティとメソッドを返します。
したがって、モジュールで 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 で定義されているすべての関数が含まれています。
Python で利用可能な組み込みモジュールで dir() を使用することもできます。 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.pyfile が必要です。 init.py はディレクトリをパッケージとして作成します。これが、これから取り組むパッケージのレイアウトです。
パッケージの名前は my package です .パッケージの作業を開始するには、package/ というディレクトリを作成します。ディレクトリ内に、__init__.py という空のファイルを作成します。さらに 3 つのファイル module1.py、module2.py、および module3.py を作成し、スクリーンショットに示すように関数を定義します。 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 がインポートされ、mod1 というエイリアス名が付けられます。 同様に、私のパッケージの他のモジュール 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 モジュールをインポートして 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']
パスを変更して、必要に応じてディレクトリを保持することもできます。
インポートでのモジュール エイリアスの使用
エイリアス名を付けることで、モジュール名を短い形式に変換することもできます。エイリアスは、キーワードを使用して実行できます。
構文:
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 での絶対インポートと相対インポート
ファイルを別のファイル内のモジュールとしてインポートする方法がわかりました。フォルダで使用可能なファイルを管理する方法を見てみましょう。フォルダー内のファイルは、絶対インポートまたは相対インポートを使用してインポートできます。
以下に示すようなプロジェクト フォルダー構造があるとします。
ルート フォルダーは私のプロジェクト/です。これには、package1 と package2 の 2 つのサブフォルダーがあります。
フォルダー package1 には、module1.py と module2.py の 2 つのモジュールがあります。
フォルダー package2 には、1 つのクラス myclass.py、module3.py を含むサブパッケージ subpkg、および最後の module4.py があります。
- module1.py には、myfunc1 という関数があります。
- module2.py には、myfunc2 という関数があります。
- module3.py には、myfunc3 という関数があります。
- module4.py には、myfunc4 という関数があります。
絶対インポートの使用
絶対インポートの場合、プロジェクトのルート フォルダーから直接モジュールのパス全体を追加する必要があります。
絶対インポートを使用して、各モジュールに存在する関数を参照する方法を見てみましょう。
functionmyfunc1 を使用するには、次のようにインポートする必要があります:
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()
絶対インポートを使用する利点と欠点
絶対インポートを使用する利点は次のとおりです。
- コードチェックのためのモジュールのトレースバックが容易になります。
- 使いやすく、とても簡単です。
- プロジェクトを別のパスに移動しても、インポートは同じままです。
絶対インポートを使用するデメリット
絶対インポートを使用する場合の欠点は次のとおりです:
短所:
- インポート パスは、モジュールがネストされている場合や、モジュールの名前が長い場合に非常に長くなる可能性があります。
相対インポートの使用
以下で説明する同じフォルダー構造を考慮して、相対インポートを使用して同じフォルダー構造をインポートする方法を確認します。
相対インポートでは、インポートされるモジュールは、インポート ステートメントが存在する場所である現在の場所に対して相対的です。
構文:
相対インポートでは、 from を使用してインポートするときに、モジュール名の前にピリオド (.) を追加する必要があります .
モジュールが現在の場所から 1 つ上のレベルにある場合、モジュール名の前に 2 つのピリオド (..) が表示されます。
上記のフォルダー構造の図を参照すると、参照する必要がある機能を備えた次のモジュールがあります。
- module1.py には、myfunc1 という関数があります。
- module2.py には、myfunc2 という関数があります。
- module3.py には、myfunc3 という関数があります。
- module4.py には、myfunc4 という関数があります。
functionmyfunc1 を使用するには、次のようにインポートする必要があります:
from .module1 import myfunc1
関数 myfunc3 を使用するには、次のようにインポートする必要があります:
from .subpkg.module3 import myfunc3
相対インポートの利点
利点:
- 相対インポートの操作は簡単です。
- 現在の場所からのインポートは、絶対インポートに比べて短縮できます。
相対インポートのデメリット
短所:
- 相対インポートを使用すると、コードが存在する場所を追跡するのが困難になります
まとめ:
- Python でのインポートは、別のファイルに記述されたコード、つまり .functions/objects を参照するのに役立ちます。また、pip(python package manager) を使用してインストールされた python ライブラリ/パッケージをインポートするためにも使用され、コードで使用する必要があります。
- typescript、JavaScript、java、ruby などの他の言語でインポート機能を利用できます。
- A module is python は、ファイル内に記述されたコードです (test.py など)。ファイル内で、変数、関数、またはクラスを定義できます。ファイル全体がモジュールになり、コードを参照するために別のファイル内にインポートできます。
- モジュール機能を使用すると、コードをすべて 1 つのファイルに書き込むのではなく、複数のファイルに分割できます。後でインポートを使用して、必要なファイル内のコードを参照できます。
- Python には組み込みモジュールがあり、python パッケージ マネージャー (pip) を使用してインストールされた外部ライブラリ/パッケージ (pandas、NumPy など) はモジュールと呼ばれます。
- 完全なコードをインポートする代わりに、モジュールのごく一部、つまりモジュールから必要な関数と変数名のみをインポートできます。
- エイリアス名を付けることで、モジュール名を短い形式に変換することもできます。エイリアスは、キーワードを使用して実行できます。
- パッケージは、その中にすべてのモジュールが定義されたディレクトリです。 Python インタープリターがパッケージとして扱うようにするには、ディレクトリに __init.pyfile が必要です。 init.py はディレクトリをパッケージとして作成します。これが、これから取り組むパッケージのレイアウトです。
- 実行中に Python が インポート モジュール名 に遭遇したとき 、インタープリターはモジュールを見つけようとします。組み込みモジュール一覧からモジュールを検索します。後は、sys.path 内で定義されたディレクトリです。
- 絶対インポートの場合、プロジェクトのルート フォルダから直接モジュールのパス全体を追加する必要があります。
- 相対インポートでは、インポートされるモジュールは、インポート ステートメントが存在する場所である現在の場所に対して相対的です。
Python