工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

例を使用して Python でモジュールをインポートする

Python のモジュールとは?

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

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

このチュートリアルでは、次のことを学びます:

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.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 があります。

    絶対インポートの使用

    絶対インポートの場合、プロジェクトのルート フォルダーから直接モジュールのパス全体を追加する必要があります。

    絶対インポートを使用して、各モジュールに存在する関数を参照する方法を見てみましょう。

    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 つのピリオド (..) が表示されます。

    上記のフォルダー構造の図を参照すると、参照する必要がある機能を備えた次のモジュールがあります。

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

    from  .module1  import  myfunc1
    

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

    from  .subpkg.module3  import  myfunc3
    

    相対インポートの利点

    利点:

    相対インポートのデメリット

    短所:

    まとめ:


    Python

    1. Python モジュール
    2. Python 時間モジュール
    3. 例を使用した Python 文字列 count()
    4. Python String format() 例で説明
    5. Python String find() メソッドと例
    6. 例を含む Python Lambda 関数
    7. 例を使用した Python round() 関数
    8. 例を使用した Python map() 関数
    9. Python Timeit() と例
    10. 例を使用したコレクション内の Python カウンター
    11. Python の type() と isinstance() と例