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

Python-モジュール

前のページ次のページ

モジュールを使用すると、Python コードを論理的に編成できます。関連するコードをモジュールにグループ化すると、コードが理解しやすく、使いやすくなります。モジュールは、バインドおよび参照できる任意の名前の属性を持つ Python オブジェクトです。

簡単に言うと、モジュールは Python コードで構成されるファイルです。モジュールは、関数、クラス、および変数を定義できます。モジュールには、実行可能なコードを含めることもできます。

aname という名前のモジュールの Python コード 通常は aname.py という名前のファイルにあります .簡単なモジュールの例、support.py を次に示します。

def print_func( par ):
   print "Hello : ", par
   return

インポート 声明

他の Python ソース ファイルで import ステートメントを実行することにより、任意の Python ソース ファイルをモジュールとして使用できます。 インポート 次の構文があります-

import module1[, module2[,... moduleN]

インタープリターが import ステートメントに遭遇すると、モジュールが検索パスに存在する場合、モジュールをインポートします。検索パスは、モジュールをインポートする前にインタプリタが検索するディレクトリのリストです。たとえば、モジュール support.py をインポートするには、次のコマンドをスクリプトの先頭に配置する必要があります −

#!/usr/bin/python

# Import module support
import support

# Now you can call defined function that module as follows
support.print_func("Zara")

上記のコードが実行されると、次の結果が生成されます-

Hello : Zara

モジュールは、インポートの回数に関係なく、1 回だけロードされます。これにより、複数のインポートが発生した場合にモジュールの実行が何度も繰り返されるのを防ぎます。

from...import 声明

Python の from ステートメントを使用すると、特定の属性をモジュールから現在の名前空間にインポートできます。 from...import 次の構文があります-

from modname import name1[, name2[, ... nameN]]

たとえば、モジュール fib から関数 fibonacci をインポートするには、次のステートメントを使用します −

from fib import fibonacci

このステートメントは、モジュール fib 全体を現在の名前空間にインポートしません。モジュール fib からアイテム fibonacci をインポート モジュールのグローバル シンボル テーブルに導入するだけです。

from...import * 声明

次のインポートステートメントを使用して、モジュールから現在の名前空間にすべての名前をインポートすることもできます-

from modname import *

これにより、すべての項目をモジュールから現在の名前空間に簡単にインポートできます。ただし、このステートメントは慎重に使用する必要があります。

モジュールの検索

モジュールをインポートすると、Python インタープリターは次の順序でモジュールを検索します −

モジュールの検索パスは、sys.path としてシステム モジュール sys に格納されます。 変数。 sys.path 変数には、現在のディレクトリ、PYTHONPATH、およびインストールに依存するデフォルトが含まれます。

PYTHONPATH 変数

PYTHONPATH は、ディレクトリのリストで構成される環境変数です。 PYTHONPATH の構文は、シェル変数 PATH の構文と同じです。

これは、Windows システムからの典型的な PYTHONPATH です −

set PYTHONPATH = c:\python20\lib;

そして、これは UNIX システムからの典型的な PYTHONPATH です −

set PYTHONPATH = /usr/local/lib/python

名前空間とスコープ

変数は、オブジェクトにマップされる名前 (識別子) です。 名前空間 変数名 (キー) とそれに対応するオブジェクト (値) の辞書です。

Python ステートメントは、ローカル名前空間の変数にアクセスできます グローバル名前空間 .ローカル変数とグローバル変数が同じ名前の場合、ローカル変数はグローバル変数を隠します。

各関数には、独自のローカル名前空間があります。クラス メソッドは、通常の関数と同じスコープ規則に従います。

Python は、変数がローカルかグローバルかについて、経験に基づいた推測を行います。関数で値が割り当てられた変数はすべてローカルであると想定しています。

したがって、関数内でグローバル変数に値を代入するには、最初に global ステートメントを使用する必要があります。

ステートメント global VarName VarName がグローバル変数であることを Python に伝えます。 Python は変数のローカル名前空間の検索を停止します。

たとえば、変数 Money を定義します グローバル名前空間で。関数 Money 内 、お金を割り当てます 値なので、Python は Money を想定しています ローカル変数として。ただし、ローカル変数 Money の値にアクセスしました 設定する前に、 UnboundLocalError が結果になります。グローバル ステートメントのコメントを解除すると、問題が解決します。

#!/usr/bin/python

Money = 2000
def AddMoney():
   # Uncomment the following line to fix the code:
   # global Money
   Money = Money + 1

print Money
AddMoney()
print Money

dir( ) 関数

dir() 組み込み関数は、モジュールによって定義された名前を含む文字列のソートされたリストを返します。

リストには、モジュールで定義されているすべてのモジュール、変数、および関数の名前が含まれています。以下は簡単な例です-

ライブデモ
#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)
print content

上記のコードが実行されると、次の結果が生成されます-

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']

ここで、特別な文字列変数 __name__ はモジュールの名前、__file__ モジュールがロードされたファイル名です。

globals() および locals() 関数

globals() および locals() 関数を使用して、呼び出された場所に応じて、グローバルおよびローカル名前空間の名前を返すことができます。

locals() が関数内から呼び出された場合、その関数からローカルにアクセスできるすべての名前が返されます。

globals() が関数内から呼び出された場合、その関数からグローバルにアクセスできるすべての名前が返されます。

これら両方の関数の戻り値の型は辞書です。したがって、keys() 関数を使用して名前を抽出できます。

reload() 機能

モジュールがスクリプトにインポートされると、モジュールの最上位部分のコードが 1 回だけ実行されます。

したがって、モジュールの最上位コードを再実行する場合は、reload() を使用できます。 関数。 reload() 関数は、以前にインポートされたモジュールを再度インポートします。 reload() 関数の構文は次のとおりです −

reload(module_name)

ここでは、module_name モジュール名を含む文字列ではなく、リロードするモジュールの名前です。たとえば、hello をリロードするには モジュールで、次のことを行います −

reload(hello)

Python のパッケージ

パッケージは、モジュール、サブパッケージ、サブサブパッケージなどで構成される単一の Python アプリケーション環境を定義する階層的なファイル ディレクトリ構造です。

ファイル Pots.py を考えてみましょう 電話で利用可能 ディレクトリ。このファイルには、次のソース コード行があります −

#!/usr/bin/python

def Pots():
   print "I'm Pots Phone"

同様に、上記と同じ名前で異なる機能を持つ別の 2 つのファイルがあります −

次に、Phone に __init__.py ファイルをもう 1 つ作成します。 ディレクトリ−

Phone をインポートしたときにすべての関数を使用できるようにするには、次のように __init__.py に明示的なインポート ステートメントを配置する必要があります −

from Pots import Pots
from Isdn import Isdn
from G3 import G3

これらの行を __init__.py に追加すると、Phone パッケージをインポートするときにこれらすべてのクラスを使用できるようになります。

#!/usr/bin/python

# Now import your Phone Package.
import Phone

Phone.Pots()
Phone.Isdn()
Phone.G3()

上記のコードが実行されると、次の結果が生成されます-

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

上記の例では、各ファイルに単一の関数の例を示しましたが、ファイルに複数の関数を保持できます。これらのファイルでさまざまな Python クラスを定義して、それらのクラスからパッケージを作成することもできます。


Python

  1. Python データ型
  2. Python の入力、出力、およびインポート
  3. Python 演算子
  4. Python 関数の引数
  5. Python モジュール
  6. Python 辞書
  7. Python イテレータ
  8. Python クロージャー
  9. Python 日時
  10. Python 時間モジュール
  11. Pythonスリープ()