Python でのインポートモジュールと例

Python のモジュールとは何ですか?

モジュールは Python コードを含むファイルです。 コードは、変数、関数、または定義されたクラスの形式にすることができます。 ファイル名がモジュール名になります。

たとえば、ファイル名が guru99.py の場合、モジュール名は次のようになります。 guru99。 モジュール機能を使用すると、コードを XNUMX つのファイル内にすべてを記述するのではなく、複数のファイルに分割できます。

Pythonインポートモジュールとは何ですか?

Pythonではファイルはモジュールとして扱われます。 モジュールを使用するには、次を使用してモジュールをインポートする必要があります インポート キーワード。 ファイル内に存在する関数または変数は、モジュールをインポートすることで別のファイルで使用できます。 この機能は、typescript、JavaScript、java、ruby などの他の言語でも利用できます。

Python でモジュールを作成してインポートするにはどうすればよいですか?

次に、モジュールを作成し、それを別のファイルにインポートします。

スクリーンショットに示すように、モジュールを作成してインポートするフローは次のとおりです。

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を実行すると以下の内容が得られますwing 出力:

Welcome to Guru99 Tutorials!

Python でのクラスのインポート

先ほど、関数を備えた単純なモジュールを見てきました。 ここではクラスを作成し、別のファイル内でそのクラスを参照します。

コードをテストするためのフォルダー構造は次のとおりです。

myproj/
	Car.py
	display.py

以下の内容で Car.py というファイルを作成します。wing コー​​ド:

ファイル名 : 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_de です。tails()、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	

Following コードはtails test.py内

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

インポートモジュールの使用

import モジュール名だけを使用してモジュール内の変数や関数を参照するには、モジュール名をプレフィックスとして付ける必要があります。

ファイル名 : 表示.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 はディレクトリをパッケージとして作成します。 これがこれから作業するパッケージのレイアウトです。

Python のパッケージ

パッケージの名前は、 私のパッケージ。パッケージの操作を開始するには、package/ というディレクトリを作成します。ディレクトリ内に、__init__.py という空のファイルを作成します。さらに 3 つのファイル module1.py、module2.py、および module3.py を作成し、スクリーンショットに示すように関数を定義します。こちらがデですtails 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")

最大XNUMXWの出力を提供する パッケージすぐに使用できます。 次に、以下に示すように、ファイル内のパッケージを呼び出します: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に遭遇したとき インポートモジュール名、インタープリタはモジュールを見つけようとします。組み込みモジュール一覧からモジュールを検索します。 Later すべて、sys.path 内で定義されたディレクトリです。

要約すると、インタプリタは次のことを行います。wing 検索してモジュールを見つけます。

  1. 現在のディレクトリ内。
  2. 組み込みモジュールリストにある
  3. sys.path ディレクトリ内

デを取得できますtails 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	

Following 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 での絶対インポートと相対インポート

ファイルを別のファイル内のモジュールとしてインポートする方法がわかりました。 フォルダー内で利用可能なファイルを管理する方法を見てみましょう。 フォルダー内のファイルは、絶対インポートまたは相対インポートを使用してインポートできます。

以下に示すようなプロジェクト フォルダー構造があるとします。

Python での絶対インポートと相対インポート

ルートフォルダーは私のプロジェクト/です。 これには、package1 と package2 という XNUMX つのサブフォルダーがあります。

フォルダー package1 には、module1.py と module2.py という XNUMX つのモジュールがあります。

フォルダー package2 には、3 つのクラス myclass.py、module4.py を含むサブパッケージ subpkg、および最後の moduleXNUMX.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()  

絶対インポートを使用する利点と欠点

絶対インポートを使用する利点は次のとおりです。

  • コードチェックのためにモジュールを遡ることが容易になります。
  • 使いやすく、とても簡単です。
  • プロジェクトが別のパスに移動されても、インポートは同じままになります。

絶対インポートを使用するデメリット

絶対インポートを使用する場合の欠点を次に示します。

短所:

  • モジュールがネストされている場合、およびモジュールの名前が長い場合、インポート パスは非常に長くなる可能性があります。

相対インポートの使用

以下で説明する同じフォルダー構造を考慮して、相対インポートを使用して同じフォルダー構造をインポートする方法を見ていきます。

相対インポートでは、インポートされるモジュールは、インポート ステートメントが存在する場所である現在の場所に対して相対的になります。

構文

相対インポートでは、次を使用してインポートするときにモジュール名の前にピリオド (.) を追加する必要があります。  .

モジュールが現在の場所から 2 つ上のレベルにある場合は、モジュール名の XNUMX つのピリオド (..) になります。

上記のフォルダー構造図を参照すると、次のようになります。wing モジュールとその機能を参照する必要があります。

  • module1.py には、myfunc1 という関数があります。
  • module2.py には、myfunc2 という関数があります。
  • module3.py には、myfunc3 という関数があります。
  • module4.py には、myfunc4 という関数があります。

functionmyfunc1 を使用するには、次のようにインポートする必要があります。

from  .module1  import  myfunc1

関数 myfunc3 を使用するには、次のようにインポートする必要があります。

from  .subpkg.module3  import  myfunc3

相対輸入のメリット

Advantages:

  • 相対インポートの操作は簡単です。
  • 現在の場所からのインポートは、絶対インポートと比較して短縮できます。

相対輸入のデメリット

短所:

  • 相対インポートを使用すると、コードが存在する場所を追跡することが困難になります

まとめ

  • Python でのインポートは、コード (つまり、別のファイルに記述された .functions/objects) を参照するのに役立ちます。 また、pip(Python パッケージ マネージャー) を使用してインストールされた Python ライブラリ/パッケージをインポートするためにも使用され、コード内で使用する必要があります。
  • インポート機能は、typescript、JavaScript、java、ruby などの他の言語でも利用できます。
  • モジュールとは、Python ファイル内に記述されたコードです (例: test.py)。 ファイル内で、変数、関数、またはクラスを定義できます。 ファイル全体がモジュールとなり、別のファイル内にインポートしてコードを参照できます。
  • モジュール機能を使用すると、コードを 1 つのファイル内にすべてを記述するのではなく、複数のファイルに分割できます。 Later, import を使用すると、必要なファイル内のコードを参照できます。
  • Python には組み込みモジュールがあり、また、 Pythonパッケージマネージャー (pip)、たとえば、pandas、NumPy などはモジュールと呼ばれます。
  • コード全体をインポートする代わりに、モジュールの一部だけ、つまりモジュールから必要な関数と変数名だけをインポートできます。
  • モジュール名にエイリアス名を付けることで、モジュール名を短い形式に変換することもできます。 エイリアスはキーワードを使用して作成できます。
  • パッケージは、その中に定義されたすべてのモジュールを含むディレクトリです。 Python インタープリターにパッケージとして扱わせるには、ディレクトリに __init.pyfile が必要です。 init.py はディレクトリをパッケージとして作成します。 これがこれから作業するパッケージのレイアウトです。
  • 実行中にPythonに遭遇したとき インポートモジュール名、インタープリタはモジュールを見つけようとします。組み込みモジュール一覧からモジュールを検索します。 Later すべて、sys.path 内で定義されたディレクトリです。
  • 絶対インポートの場合は、プロジェクトのルート フォルダーからモジュールの完全なパスを直接追加する必要があります。
  • 相対インポートでは、インポートされるモジュールは、インポート ステートメントが存在する場所である現在の場所に対して相対的になります。