Latest web development tutorials

Pythonモジュール

モジュールは、論理的にPythonコードを整理することができます。

モジュールに関連するコードを割り当てると、より理解し、使用するようにコードを容易にします。

Pythonモジュールは、ランダムな名前の属性を持つオブジェクトがバインドまたは参照するために使用されています。

簡単に言えば、モジュールは、ファイルを保存するためのPythonコードです。 モジュールは、関数、クラスや変数を定義することができます。 モジュールは、実行可能コードを含めることができます。

一般的にPythonコードで呼ばれるANAMEモジュールはaname.pyと呼ばれるファイルに記載されています。 次の例では、単純なモジュールsupport.pyです。

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


import文

次のようにPythonのソースファイルを使用する場合は、単にソースファイル内の別のimport文を実行し、構文は次のとおりです。

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

モジュールは、現在の検索パスにインポートされる場合、インタプリタは、import文を検出すると。

検索パスは、最初にすべてのディレクトリのリストを検索するインタプリタです。 あなたは、モジュールsupport.pyをインポートすると、あなたのスクリプトの先頭にコマンドを配置する必要があります:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 导入模块
import support
 
# 现在可以调用模块里包含的函数了
support.print_func("Zara")

上記の出力の例:

Hello : Zara

モジュールは関係なく、インポートを実行する回数を、一度にインポートされません。 これは、インポートモジュールは、何度も繰り返し実行されないようにします。



... import文

Pythonはあなたが現在の名前空間へのモジュールから指定した部分からステートメントをインポートすることができます。 構文は次のとおりです。

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

例えば、モジュールのFIBフィボナッチ関数をインポートするには、次のステートメントを使用します。

from fib import fibonacci

この文は、現在の名前空間にモジュール全体をFIBしない、それだけでこの宣言モジュールの単一のグローバルシンボルテーブルの実装に導入レーンフィボナッチをFIBます。



...インポート*ステートメント

モジュールのすべての内容は、現在のすべての名前空間にあるだけで次の文を使用し、可能です。

from modname import *

これは、すべてのプロジェクトにモジュールをインポートする簡単な方法を提供します。 しかし、このステートメントを使用するのが多すぎるべきではありません。



位置決めモジュール

あなたはモジュールをインポートすると、Pythonのパーサモジュールの位置検索順序は次のとおりです。

  • カレントディレクトリ
  • 現在のディレクトリにない場合、Pythonはシェル変数PYTHONPATHに各ディレクトリを検索します。
  • あなたは見つけることができない場合、Pythonはデフォルトのパスを見ていきます。 UNIXでは、デフォルトのパスは、/ usr / local / libの/ Pythonの/通常です。

モジュールの検索パスは、適宜sys.path変数システムモジュールに格納されています。 変数は、現在のディレクトリ、PYTHONPATHおよび意思決定プロセスによって、デフォルトのインストールディレクトリが含まれています。



PYTHONPATH変数

環境変数として、ディレクトリの多くのリストに取り付けられたことにより、PYTHONPATH。 PYTHONPATHシェル変数PATHの構文と同じ。

Windowsシステムでは、のような典型的なPYTHONPATHは、次のとおりです。

set PYTHONPATH=c:\python20\lib;

UNIXシステムでは、のような典型的なPYTHONPATHは、次のとおりです。

set PYTHONPATH=/usr/local/lib/python


名前空間とスコープ

変数は、オブジェクトの名前が一致する(識別子)を有しています。 名前空間は、辞書の彼らの(キー)の名前と、それぞれのオブジェクトである(値)を含む変数です。

Python式は、ローカルおよびグローバルな名前空間の名前空間の変数にアクセスすることができます。 グローバル変数と同じ名前のローカル変数場合は、ローカル変数はグローバル変数を上書きします。

各関数は、独自の名前空間を持っています。 範囲は、通常、クラスメソッドや関数としてルール。

Pythonはインテリジェントに変数がローカルまたはグローバルだと思い、機能割り当て内の任意の変数がローカルであると仮定されます。

あなたが関数内でグローバル変数の割り当てを与える場合はそのため、あなたは世界的なステートメントを使用する必要があります。

グローバルVARNAME式は、Python、VARNAMEはグローバル変数なので、Pythonはローカルな名前空間でこの変数を見つけられないように指示します。

たとえば、私たちは、グローバル名前空間で変数お金を定義します。 私たちは、変数お金に割り当てられた機能の中には、Pythonはお金がローカル変数であることを前提としています。 しかし、私たちはお金にアクセスする前にローカル変数を宣言していない、結果はUnboundLocalError間違いがあるだろうということです。 キャンセルglobal文のコメントは、この問題を解決することができます。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
Money = 2000
def AddMoney():
   # 想改正代码就取消以下注释:
   # global Money
   Money = Money + 1
 
print Money
AddMoney()
print Money


DIR()関数

DIR()関数は、文字列の列の良いシーケンスのリストで、コンテンツは、モジュール定義された名前です。

、モジュールで定義された変数や関数に対応するために、すべてのモジュールのリストを返します。 次のように単純な例は次のとおりです。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 导入内置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__点は、モジュールのファイル名をインポートします。



グローバル()や地元の人々()関数

市内通話に応じて、グローバル()や地元の人々()関数は、グローバルとローカル名前空間名を返すために使用することができます。

あなたは()関数内で地元の人々を呼び出した場合、返品には、名前のすべての機能にアクセスすることができます。

あなたが関数内でグローバル()を呼び出すとグローバルなエネルギー・アクセスにすべての関数名を返します。

どちらの関数は、型が辞書で返します。 だから名前我々はキー()関数の除去を使用しています。



リロード()関数

モジュールは、コードのスクリプトモジュールの頂部に導入されたときに一度だけ実行されます。

あなたがコードの先頭部分にモジュールを再実行させたい場合、リロード()関数を使用することができます。 この関数は、インポートされたモジュールの前に再インポートされます。 構文は次のとおりです。

reload(module_name)

ここで、モジュールのモジュール名名前は、文字列の代わりに、直接配置することができます。 たとえば、次のように、ハローモジュールを上書きしたいです:

reload(hello)


Pythonのパック

パッケージには、Pythonアプリケーション環境の他のコンポーネントの下のモジュールやサブパッケージ、およびサブパッケージによって子パッケージを定義する階層ディレクトリ構造、です。

電話ディレクトリにpots.pyファイルを考えてみましょう。 このファイルには、以下のソースコードを持っています。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
def Pots():
   print "I'm Pots Phone"
   

同様に、我々はファイルを保存するための2つの異なる機能を持っています。

  • 電話/ Isdn.py含む関数ISDN()
  • 関数G3を含む電話/ G3.py()

今、電話帳内のファイル__init__.pyを作成します。

  • 電話/ __ init__.py

あなたが電話をインポートすると、あなたは次のように、__init__.py年間で明示的にimportステートメントを使用する必要があるすべての機能を使用できるようにするには:

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

あなたはを__init__.pyするためのコード、インポートされた電話のパッケージを追加すると、これらのクラスは、すべての上で使用可能な場合。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 导入 Phone 包
import Phone
 
Phone.Pots()
Phone.Isdn()
Phone.G3()

上記の出力の例:

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

例えば、私たちは、それぞれのファイルに一つだけの機能を持っていますが、実際には、あなたは多くの機能を置くことができますように。 また、これらのファイルでPythonクラスを定義し、これらのクラスのパッケージを構築することができます。