Python モジュール
Python モジュール
この記事では、Python でカスタム モジュールを作成してインポートする方法を学習します。また、カスタム モジュールや組み込みモジュールを Python にインポートして使用するためのさまざまなテクニックも紹介します。
ビデオ:Python モジュール
Python のモジュールとは?
モジュールは、Python ステートメントと定義を含むファイルを参照します。
Python コードを含むファイル。例:example.py
、モジュールと呼ばれ、そのモジュール名は example
になります .
モジュールを使用して、大きなプログラムを管理しやすく整理された小さなファイルに分割します。さらに、モジュールはコードの再利用性を提供します。
定義を別のプログラムにコピーする代わりに、モジュールで最もよく使用される関数を定義してインポートできます。
モジュールを作成してみましょう。次のように入力し、example.py
として保存します。 .
# Python Module example
def add(a, b):
"""This program adds two
numbers and return the result"""
result = a + b
return result
ここで、関数 add()
を定義しました example
という名前のモジュール内 .この関数は 2 つの数値を受け取り、それらの合計を返します。
Python でモジュールをインポートする方法
モジュール内の定義を別のモジュールまたは Python の対話型インタープリターにインポートできます。
import
を使用します これを行うためのキーワード。以前に定義したモジュール example
をインポートするには 、Python プロンプトで次のように入力します。
>>> import example
これは example
で定義された関数の名前をインポートしません 現在のシンボルテーブルに直接。モジュール名 example
のみをインポートします
モジュール名を使用して、ドット .
を使用して関数にアクセスできます オペレーター。例:
>>> example.add(4,5.5)
9.5
Python にはたくさんの標準モジュールがあります。 Python 標準モジュールとそのユース ケースの完全なリストを確認できます。これらのファイルは、Python をインストールした場所内の Lib ディレクトリにあります。
標準モジュールは、ユーザー定義モジュールをインポートするのと同じ方法でインポートできます。
モジュールをインポートするには、さまざまな方法があります。それらは以下にリストされています..
Python インポート ステートメント
import
を使用してモジュールをインポートできます ステートメントを開き、上記のようにドット演算子を使用してその中の定義にアクセスします。以下に例を示します。
# import statement example
# to import standard module math
import math
print("The value of pi is", math.pi)
プログラムを実行すると、出力は次のようになります:
The value of pi is 3.141592653589793
名前を変更してインポート
次のように名前を変更して、モジュールをインポートできます。
# import module by renaming it
import math as m
print("The value of pi is", m.pi)
math
の名前を変更しました m
のモジュール .これにより、場合によっては入力時間を節約できます。
math
という名前に注意してください。 私たちの範囲では認識されていません。したがって、math.pi
は無効で、m.pi
は正しい実装です。
Python from...import ステートメント
モジュール全体をインポートせずに、モジュールから特定の名前をインポートできます。以下に例を示します。
# import only pi from math module
from math import pi
print("The value of pi is", pi)
ここでは、pi
のみをインポートしました math
の属性 モジュール。
このような場合、ドット演算子は使用しません。次のように複数の属性をインポートすることもできます:
>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045
すべての名前をインポート
次の構成を使用して、モジュールからすべての名前 (定義) をインポートできます:
# import all names from the standard module math
from math import *
print("The value of pi is", pi)
ここで、math モジュールからすべての定義をインポートしました。これには、アンダースコアで始まる名前 (プライベート定義) を除く、スコープ内で表示されるすべての名前が含まれます。
アスタリスク (*) 記号を使用してすべてをインポートすることは、適切なプログラミング方法ではありません。これにより、識別子の定義が重複する可能性があります。また、コードの可読性も妨げられます。
Python モジュール検索パス
モジュールをインポートする間、Python はいくつかの場所を調べます。インタープリターは最初に組み込みモジュールを探します。次に (組み込みモジュールが見つからない場合)、Python は sys.path
で定義されているディレクトリのリストを調べます。 .検索はこの順序で行われます。
- 現在のディレクトリ。
PYTHONPATH
(ディレクトリのリストを含む環境変数)- インストールに依存するデフォルト ディレクトリ。
>>> import sys >>> sys.path ['', 'C:\\Python33\\Lib\\idlelib', 'C:\\Windows\\system32\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site-packages']
このリストを追加および変更して、独自のパスを追加できます。
モジュールのリロード
Python インタープリターは、セッション中にモジュールを 1 回だけインポートします。これにより、物事がより効率的になります。これがどのように機能するかを示す例を次に示します。
my_module
という名前のモジュールに次のコードがあるとします。 .
# This module shows the effect of
# multiple imports and reload
print("This code got executed")
これで、複数のインポートの効果がわかります。
>>> import my_module
This code got executed
>>> import my_module
>>> import my_module
コードが 1 回だけ実行されたことがわかります。これは、モジュールが 1 回だけインポートされたことを意味します。
プログラムの途中でモジュールが変更された場合は、モジュールをリロードする必要があります。これを行う 1 つの方法は、インタープリターを再起動することです。しかし、これはあまり役に立ちません。
Python は、これを行うためのより効率的な方法を提供します。 reload()
を使用できます imp
内の関数 モジュールをリロードします。次の方法でそれを行うことができます:
>>> import imp
>>> import my_module
This code got executed
>>> import my_module
>>> imp.reload(my_module)
This code got executed
<module 'my_module' from '.\\my_module.py'>
dir() 組み込み関数
dir()
を使用できます モジュール内で定義されている名前を見つける関数。
たとえば、関数 add()
を定義しました モジュール example
で
dir
を使用できます example
で 次の方法でモジュールを作成します:
>>> dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']
ここでは、並べ替えられた名前のリストが表示されます (add
とともに)。 )。アンダースコアで始まる他のすべての名前は、モジュールに関連付けられたデフォルトの Python 属性です (ユーザー定義ではありません)。
たとえば、__name__
属性にはモジュールの名前が含まれます。
>>> import example
>>> example.__name__
'example'
現在の名前空間で定義されているすべての名前は、dir()
を使用して見つけることができます 引数なしの関数。
>>> a = 1
>>> b = "hello"
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']
Python