モジュールを使用すると、Pythonコード スニペットを論理的に整理できます。
関連するコードをモジュールに割り当てると、コードがより使いやすく、理解しやすくなります。
モジュールも Python オブジェクトであり、バインドまたは参照に使用されるランダムな名前属性が付いています。
簡単に言うと、モジュールは Python コードを保存するファイルです。モジュールは、関数、クラス、変数を定義できます。モジュールには実行可能コードを含めることもできます。
例
aname というモジュールの Python コードは、通常、aname.py というファイルにあります。次の例は、単純なモジュール support.py です。
def print_func( par ):
print "Hello : ", par
Python ソース ファイルを使用したい場合は、別のソース ファイルで import ステートメントを実行するだけです。構文は次のとおりです。
import module1[, module2[,... moduleN]
インタプリタが import ステートメントに遭遇すると、モジュールが現在の検索パスにあればインポートされます。
検索パスは、インタープリターが最初に検索するすべてのディレクトリのリストです。モジュール hello.py をインポートしたい場合は、スクリプトの先頭にコマンドを置く必要があります:
#!/usr/bin/python
# モジュールのインポート
import support
# これで、次のコマンドを呼び出すことができます。モジュールに含まれる関数
support.print_func("Zara")
上記の例の出力結果:
Hello : Zara.
モジュールは、何度実行しても、インポートされるのは 1 回だけです。輸入。これにより、インポートされたモジュールが何度も実行されるのを防ぎます。
Python の from ステートメントを使用すると、指定した部分をモジュールから現在の 名前空間 にインポートできます。構文は次のとおりです:
>>>from modname import name1[, name2[, ... nameN]]
たとえば、モジュール fib のフィボナッチ関数をインポートするには、次のステートメントを使用します:
>>> from fib import fibonacci
このステートメントは、fib モジュール全体を現在の名前空間にインポートするのではなく、このステートメントを実行するモジュールのグローバル シンボル テーブルに fib 内の 1 つの fibonacci を導入するだけです。
次のステートメントを使用するだけで、モジュールのすべてのコンテンツを現在の名前空間にインポートすることもできます:
>>>from mod_name import *
Thisモジュール内のすべてのプロジェクトをインポートする簡単な方法を提供します。ただし、このステートメントは乱用すべきではありません。
モジュールをインポートする場合、Python パーサーによるモジュールの場所の検索順序は次のとおりです:
現在のディレクトリ
現在のディレクトリにない場合、Python は次のディレクトリの下で各モジュールを検索します。シェル変数 PYTHONPATH 目次
。
どちらも見つからない場合、Python はデフォルトのパスをチェックします。 UNIX では、通常、デフォルトのパスは /usr/local/lib/python/
です。モジュール検索パスは、システム モジュールの sys.path 変数に保存されます。変数には、現在のディレクトリ、PYTHONPATH、および インストール プロセスによって決定されるデフォルトのディレクトリが含まれます。
各関数には独自の名前空間があります。クラスメソッドのスコープ規則は、通常の関数の場合と同じです。
Python は、関数内で割り当てられた変数がローカルであると仮定して、変数がローカルであるかグローバルであるかをインテリジェントに推測します。 したがって、関数内のグローバル変数に値を代入したい場合は、global ステートメントを使用する必要があります。 グローバル VarName の式は、VarName がグローバル変数であることを Python に伝えるため、Python はローカル名前空間でこの変数を検索しません。たとえば、グローバル名前空間で変数moneyを定義します。次に、関数内の変数moneyに値を代入すると、Pythonはmoneyがローカル変数であると想定します。ただし、アクセスする前にローカル変数 Money を宣言していないため、結果は UnboundLocalError になります。この問題は、グローバル ステートメントのコメントを解除することで解決できます。 >>>#!/usr/bin/python
>>>Money = 2000
>>>def AddMoney():
# コードを修正したい場合、次のコメントを外します ;
dir( ) 関数
dir() 関数は
stringsのソートされたリストであり、その内容はモジュールで定義された名前です。
返されるリストには、モジュールで定義されているすべてのモジュール、変数、関数が含まれます。これは簡単な例です:
>>>#!/usr/bin/python
>>># 組み込み数学モジュールをインポートします
['doc', '
file', 'name', 'acos '、'asin'、'atan'、
'atan2'、'ceil'、'cos'、'cosh'、'degrees'、'e'、'exp'、
'fabs'、'floor '、'fmod'、'frexp'、'hypot'、'ldexp'、'log'、
'log10'、'modf'、'pi'、'pow'、'ラジアン'、'sin'、'sinh ',
'sqrt ', 'tan', 'tanh']
ここで、
特殊文字文字列変数nameはモジュールの名前を指し、fileはモジュールのインポートされたファイルの名前を指します。
globals() 関数と locals() 関数 呼び出される場所に応じて、globals() 関数と locals() 関数を使用して、グローバル名前空間とローカル名前空間の名前を返すことができます。 locals() が関数内で呼び出された場合、関数内でアクセスできるすべての名前が返されます。 globals() が関数内で呼び出された場合、関数内でアクセスできるすべてのグローバル名が返されます。 両方の関数の戻り値の型は辞書です。したがって、keys() 関数を使用して名前を抽出できます。 モジュールがスクリプトにインポートされるとき、モジュールのトップレベル部分のコードは 1 回だけ実行されます。>>>reload(module_name)
ここで、 module_name には文字列形式ではなくモジュールの名前を直接入力する必要があります。たとえば、hello モジュールをリロードする場合は、次のようにします:
>>>reload(hello)
Python のパッケージパッケージは、モジュールとモジュールを定義する階層的なファイル ディレクトリ構造です。 sub-package 、およびサブパッケージの下のサブパッケージで構成される Python アプリケーション環境。
電話ディレクトリ内の Pots.py ファイルについて考えてみましょう。このファイルには次のソース コードがあります:
>>>#!/usr/bin/python
>>>def Pots():
print "I'm Pots Phone"
Phone/Isdn.py には関数 Isdn() が含まれます
Phone/G3.py には関数 G3() が含まれます
さて、Phone以下のファイル init.py を作成します:
>>>from Pots import Pots
>>>from G3 import G3
>>>#!/usr/bin/python
>>>電話をインポート
>>> 。 Pots()
>>>Phone.Isdn()
>>>Phone.G3()
上記の例の出力結果:
I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone
上記のように、例のために、各ファイルに関数を 1 つだけ配置しましたが、実際には多くの関数を配置できます。これらのファイルで Python クラスを定義し、これらのクラスのパッケージを構築することもできます。
以上が必要な機能を実装するための Python モジュールのインポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。