1. ホーム
  2. Python

Pythonモジュールの簡単な説明(とても詳しいです!)。

2022-02-14 21:17:59
取得元: 。
Pythonモジュールの完全なリスト、詳細も掲載!
また、Pythonのチュートリアルを2つ添付します。
注:一部のモジュールはUnix環境でのみ動作します(例:コマンドなど)。

主な記事
  1. コアモジュール
  2. その他の標準モジュール
  3. スレッドとプロセス
  4. データ表現
  5. ファイル形式
  6. メール・ニュースメッセージの取り扱い
  7. ネットワークプロトコル
  8. 国際化
  9. マルチメディア関連モジュール
  10. データストレージ
  11. ツール・ユーティリティ
  12. その他のモジュール
  13. 実装支援モジュール
  14. その他のモジュール
  15. Py 2.0以降の新モジュール
  16. 追記

<ブロッククオート フレデリック」を役としたいところですが、何百人ものボランティアでも追いつかないでしょう。いや、'Fredrik'はhttpサーバーとスパムフィルターとemacsのwhatsitとその他のものを組み合わせた結果なんです。 <ブロッククオート -ゴードン・マクミラン、1998年6月

Python 2.0には、200以上のモジュールからなる拡張可能な標準ライブラリが付属しています。この本は、各モジュールを簡単に説明し、その使い方を説明するために少なくとも1つの例を提供します。この本には、合計360の例が含まれています。

<スパン

0.1. 本について

<ブロッククオート 一日中インターネットに書き込むしか能のない人たちが、最も洞察力のある人たちであることは稀です。 <ブロッククオート - ヤコブ・ニールセン、1998年12月

5年前に偶然Pythonに出会い、Pythonの旅が始まり、多くの時間をかけて  comp.lang.python  ニュースグループで質問に答えています。もしかしたら誰かが、まさに自分が欲しいと思っていたモジュールを見つけたかもしれませんが、その使い方がわからなかったのかもしれません。もしかしたら、誰かが自分のタスクに対して間違ったモジュールを選んでしまったのかもしれません。新しい車輪を発明するのに飽きた人がいるかもしれません。たいていの場合、マニュアルよりも短い例のほうが役に立ちます。

本書は、標準ライブラリの隅々までカバーするために、3,000以上のニュースグループでの議論と、もちろん多くの新しいスクリプトの中から、最高のものを選び出しました。

それぞれのスクリプトは、わかりやすく、コードの再利用がしやすいように心がけました。コメントは意図的に短くしていますし、もっと背景を知りたければ、各Pythonのリリースのリファレンスマニュアルを参照してください。この本で重要なのは、サンプルコードです。

ご意見、ご感想、バグレポートなどありましたら、下記までお願いします。  [email protected] . すべてのメールに可能な限り目を通しますが、迅速な対応ができない場合があります。

本書の更新情報などは、以下をご覧ください。  http://www.pythonware.com/people/fredrik/librarybook.htm

なぜTkinterはないのですか?

この本では、(オプションの)Tkinter ui(ユーザインタフェース)ライブラリを除き、標準ライブラリ全体をカバーしています。これには多くの理由がありますが、時間やこの本のスペース、そして私がTkinterに関する別の本を執筆中であることが大きな理由です。

これらの書籍に関する情報は、以下をご覧ください。  http://www.pythonware.com/people/fredrik/tkinterbook.htm . (わざわざ読まなくてもいい、別の404)

製品詳細

この本はDocBook SGMLで書かれていて、Secret LabsのPythonWorks、Excosoft Documentor、James ClarkのJade DSSSLプロセッサ、Norm WalshのDocBookスタイルシート、そしてもちろんいくつかのPythonスクリプトなど、さまざまなツールを使用しました。

校正者の方々に感謝します。Tim Peters, Guido van Rossum, David Ascher, Mark Lutz, and Rael Dornfest、そしてPythonWareのメンバーです。Matthew Ellis、Håkan Karlsson、Rune Uhlin に感謝します。

Lenny Muellnerには、SGMLファイルをこの本にするのを手伝ってもらい、Christien Shangrawには、これらのコードファイルを付属のCD(以下のサイトで入手可能)に組み立ててもらいました。 http://examples.oreilly.com/pythonsl  奇跡的に404ではありません)。

0.2. コード規約

本書では、次のような使用上の決まりを設けています。

イタリック

ファイル名やコマンドに使用します。また、用語の定義にも使用される。

Equal-width fonts e.g. Python

<ブロッククオート コードや、メソッド、モジュール、演算子、関数、文、プロパティなどの名前に使用します。

Equal-Width Bold

コード実行結果について。

0.3. 例題について

言及されていない限り、すべての例は Python 1.5.2 と Python 2.0 の下で動きます。Python 2.4/2.5 で ...... を実行できるかどうかは、関係する翻訳者に依存します。

一部のプラットフォーム関連モジュールのスクリプトを除き、すべてのサンプルはWindows、Solaris、Linuxで問題なく実行できます。

すべてのコードには著作権があります。もちろん、これらのモジュールは自由に使うことができますし、どこから入手したのか(?)を忘れないでください。学んでください。

ほとんどのサンプルは、ファイル名に使用するモジュール名を含み、その後に"を付けています。 -example- と、一意のシリアルナンバーが記載されています。なお、いくつかの例は、この本の以前のバージョンと一致するように、順番に表示されていません。 (エフボットガイド) 標準パイソンライブラリ .

この本に付属していたCDの内容は、オンラインで確認することができます(  http://examples.oreilly.com/pythonsl ). 詳細や最新情報については http://www.pythonware.com/people/fredrik/librarybook.htm . (ft、また404です。読まないように気をつけてください〜)

0.4. お問い合わせ方法

パイソンジャングルQQグループ 43680167

フェザー(校正者)QQ:85660100


<スパン

1. コアモジュール

<ブロッククオート C言語ランタイムライブラリに含まれる関数はWin32 APIの一部ではないため、このバグの影響を受けるアプリケーションは非常に限定的であると考えています" <ブロッククオート - マイクロソフト、1999年1月

1.1. はじめに

Pythonの標準ライブラリには、Python言語自体に固有の型や宣言から、一部のプログラムでのみ使用される無名のモジュールまで、さまざまなモジュールが含まれています。

この章では、基本的な標準ライブラリモジュールのいくつかを説明します。どんな大規模なPythonプログラムでも、これらのモジュールのほとんどを直接的または間接的に使用する可能性があります。

1.1.1. 組み込み関数と例外

次の2つのモジュールは、他のモジュールを合わせたものより重要です:組み込み関数(len, int, range ...など)の定義。  _ _builtin_ _  モジュールで、すべての組み込み例外を定義しています。  exceptions  モジュールを使用します。

Pythonは起動時にこれら2つのモジュールをインポートするので、どのプログラムでも使用することができます。

1.1.2. OSインタフェースモジュール

Pythonには、POSIX標準APIと標準C言語ライブラリを利用したモジュールが多数あります。これらは、基盤となるオペレーティングシステムへのプラットフォーム非依存のインタフェースを提供します。

このカテゴリには以下のモジュールが含まれます: ファイルおよびプロセスの処理を提供するモジュール  os  プラットフォーム非依存のファイル名処理 (ディレクトリ名、ファイル名、サフィックスなどの分割) を提供するモジュール。  os.path  モジュール、および time/datetime  モジュールになります。

[!Feather note: datetime is a new module in Py2.3, providing enhanced time handling]


その延長線上で、ネットワーキングやスレッディングのモジュールもこのカテゴリーに入る。Pythonはすべてのプラットフォーム/バージョンでそれらを実装しているわけではありませんが。

1.1.3. 型サポートモジュール

標準ライブラリには、組み込みの型操作をサポートするためのライブラリが多数存在します。  string  モジュールは一般的な文字列処理を実装しています。  math  モジュールは、数学の演算と定数を提供します(π、e はこのタイプの定数です)。  cmath  モジュールは、複素数の定数として  math  関数を使用します。

1.1.4. 正規表現

re  モジュールはPythonの正規表現サポートを提供します。正規表現は、文字列や特定の部分文字列をマッチさせるために使われる、構文に特化した文字列パターンです。

1.1.5. 言語サポートモジュール

sysモジュールでは、モジュール検索パスやインタプリタのバージョン番号など、インタプリタ関連のパラメータにアクセスすることができます。  operator  モジュールは、組み込みの演算子と同じことをする関数を提供します。  copy  モジュールはオブジェクトのコピーを可能にし、Python 2.0 の新機能として  gc  モジュールは、ガベージコレクションの制御を提供します。


<スパン

1.2. __builtin_ __module

このモジュールには、Pythonで使用される組み込み関数が含まれています。通常、このモジュールを手動でインポートする必要はありません。Pythonがあなたのためにすべてを行います。

1.2.1. タプルや辞書を引数にした関数の呼び出し

Pythonでは関数の引数のリストをリアルタイムに作成することができます。すべての引数をタプルに入れ、関数を呼び出すには、組み込みの  apply  関数で呼び出すことができます。例えば  例1-1 .

1.2.1.1. 例1-1. apply 機能の使用

File: builtin-apply-example-1.py

def function(a, b):
    print a, b

apply(function, ("whither", "canada?"))
apply(function, (1, 2 + 3))




カナダはどこへ行った?
1 5


関数にキーワード引数を渡すには、辞書を  apply  関数を第3引数として使用する場合、以下のようになります。  例1-2 .

1.2.1.2. 例1-2. キーワード引数を渡すためのapply関数の使用

File: builtin-apply-example-2.py

def function(a, b):
    print a, b

apply(function, ("crunchy", "frog"))
apply(function, ("crunchy",), {"b": "frog"})
apply(function, (), {"a": "crunchy", "b": "frog"})




カリカリ蛙
カエル
サクサク蛙


apply  関数の一般的な使用法は、サブクラスからベースクラスへコンストラクタの引数を渡すことです。特に、コンストラクタが多くの引数を取る場合はそうです。たとえば、次のような場合です。  例1-3  が表示されます。

1.2.1.3. 例1-3. apply 関数を使った基底クラスのコンストラクタの呼び出し

File: builtin-apply-example-3.py

class Rectangle:
    def _ _init_ _(self, color="white", width=10, height=10):
        print "create a", color, self, "size", width, "x", height

class RoundedRectangle(Rectangle):
    def _ _init_ _(self, **kw):
        apply(Rectangle._ _init_ _, (self,), kw)

rect = Rectangle(color="green", height=100, width=100)
rect = RoundedRectangle(color="blue", height=20)




緑色の <Rectangle インスタンスを 8c8260> サイズ 100 x 100 で作成します。
青色の <RoundedRectangle インスタンスを 8c84c0> サイズ 10 x 20 で作成します。


Python 2.0では、同じことをするための別の方法が用意されています。従来の関数呼び出しを使用するだけです。  *  でタプルをマークします。  **  を使って、辞書をマークアップしています。

次の二つの文は等価である。

result = function(*args, **kwargs)
result = apply(function, args, kwargs)


1.2.2. モジュールの読み込みと再読み込み

大きなPythonのプログラムを書いたことがある人なら知っているはずです。  import  文は外部モジュールをインポートするために使われます (もちろん  from-import  のバージョン)。しかし、あなたは  import  実際には、組み込み関数  _ _import_ _  が動作するようになります。

このトリックを使うと、関数を動的に呼び出すことができます。これは、モジュールの名前(文字列)しか知らない場合に便利です。  例1-4  はこの使い方を示しており、" で始まるすべての関数を動的にインポートしています。 -plugin モジュールで終わります。

1.2.2.1. 例1-4. _ _import_ _ 関数を使用したモジュールの読み込み

File: builtin-import-example-1.py

import glob, os

modules = []

for module_file in glob.glob("*-plugin.py"):
    try:
        module_name, ext = os.path.splitext(os.path.basename(module_file))
        module = _ _import_ _(module_name)
        modules.append(module)
    except ImportError:
        pass # ignore broken modules

# say hello to all modules
for module in modules:
    module.hello()




example-plugin says hello


このプラグインモジュールは、ファイル名に "-"(ハイフン)が含まれていることに注意してください。つまり、通常の  import  Pythonの識別子では"-"が使えないからです。

例 1-5  が表示されます。  例1-4  .NETで使用されているプラグイン

1.2.2.2. 例1-5. プラグイン例

File: example-plugin.py

def hello():
    print "example-plugin says hello"


例1~6  は、与えられたモジュール名と関数名に基づいて、 望みの関数オブジェクトを取得する方法を示しています。

1.2.2.3. 例1-6. 特定の関数を取得するために_ _import_ _関数を使用する

File: builtin-import-example-2.py

def getfunctionbyname(module_name, function_name):
    module = _ _import_ _(module_name)
    return getattr(module, function_name)

print repr(getfunctionbyname("dumbdbm", "open"))




794fa0> で関数が開いています。


また、この関数を使用して、モジュールの遅延ロードを実装することができます。例えば  例1-7  での  string  モジュールは、最初に使用されたときのみインポートされます。

1.2.2.4. 例1-7. _import_ _関数を使用した遅延インポートの実装

File: builtin-import-example-3.py

class LazyImport:
    def _ _init_ _(self, module_name):
        self.module_name = module_name
        self.module = None
    def _ _getattr_ _(self, name):
        if self.module is None:
            self.module = _ _import_ _(self.module_name)
        return getattr(self.module, name)

string = LazyImport("string")

print string.lowercase




abcdefghijklmnopqrstuvwxyz


また、Pythonはロードしたモジュールを再ロードするための基本的なサポートを提供します。[例 1-8 #eg-1-8 は 3 回ロードされます。  hello.py  ファイルを作成します。

1.2.2.5. 例1-8. 再読み込み機能の使用

File: builtin-reload-example-1.py

import hello
reload(hello)
reload(hello)




ハローアゲイン、そしてウェルカムトゥショウ
ハローアゲイン、そしてウェルカムトゥザショー
ハローアゲイン、そしてウェルカムトゥザショー


reloadは引数として直接モジュールを受け取ります。

[Note: ^ The original sentence is incomprehensible and will be discussed later.]


モジュールをリロードすると、モジュールは再コンパイルされ、新しいモジュールがモジュール辞書内の古いモジュールを置き換えることに注意してください。しかし、元のモジュールのクラスで作成されたインスタンスは、まだ古いモジュールを使用しています(そして、更新されません)。

同様に  from-import  モジュールコンテンツに直接作成されたものは、更新されません。

1.2.3. 名前空間について

dir  指定されたモジュール、クラス、インスタンス、またはその他の型のすべてのメンバーのリストを返します。これは対話的な Python インタープリタで有用かもしれませんが、他の場所でも使うことができます。  例1-9 が表示されます。  dir  関数を使用します。

1.2.3.1. 例1-9. dir関数の使用

File: builtin-dir-example-1.py

def dump(value):
    print value, "=>", dir(value)

import sys

dump(0)
dump(1.0)
dump(0.0j) # complex number
dump([]) # list
dump({}) # dictionary
dump("string")
dump(len) # function
dump(sys) # module




0 => [ ]です。
1.0 => [ ]です。
0j => ['conjugate', 'imag', 'real'].
[] => ['append', 'count', 'extend', 'index', 'insert',
    'pop', 'remove', 'reverse', 'sort'] となります。
{} => ['clear', 'copy', 'get', 'has_key', 'items',
    'キー', 'アップデート', '値'].
文字列 => [ ]です。
<組み込み関数 len> => ['_ _doc_ _', '_ _name_ _', '_ _self_ _' ]。
<module 'sys' (built-in)> => ['_ _doc_ _', '_ _name_ _',
    '_ _stderr_ _', '_ _stdin_ _', '_ _stdout_ _', 'argv',
    'builtin_module_names', 'copyright', 'dllhandle',
    exc_info'、'exc_type'、'exec_prefix'、'executable'。
...


例では  例1~10 で定義されている  getmember  関数は、与えられたクラスによって定義されたすべてのクラスレベルのプロパティとメソッドを返します。

1.2.3.2. 例1-10. dir 関数を使ったクラスの全メンバーの検索

File: builtin-dir-example-2.py

class A:
    def a(self):
        pass
    def b(self):
        pass

class B(A):
    def c(self):
        pass
    def d(self):
        pass

def getmembers(klass, members=None):
    # get a list of all class members, ordered by class
    if members is None:
        members = []
    for k in klass._ _bases_ _:
        getmembers(k, members)
    for m in dir(klass):
        if m not in members:
            members.append(m)
    return members

print getmembers(A)
print getmembers(B)
print getmembers(IOError)




['_ _doc_ _', '_ _module_ _', 'a', 'b'].
['_ _doc_ _', '_ _module_ _', 'a', 'b', 'c', 'd' ]。
['_ _doc_ _', '_ _getitem_ _', '_ _init_ _', '_ _module_ _', '_ _str_ _' ]である。



getmembers  関数は順序付きリストを返します。あるメンバーの名前がリスト内で早く登場するほど、そのメンバーはクラス階層の上位に位置することになります。順序が重要でない場合は、リストの代わりに辞書を使用できます。

[Note: Dictionaries are unordered, while lists and tuples are ordered, and there is a discussion of ordered dictionaries on the web]


vars

vars  関数は、各メンバーの現在値を含む辞書を返すという点では似ています。もしあなたが  locals()  は、現在のローカルな名前空間で見える要素を返します (  File: builtin-vars-example-1.py book = "library2" pages = 250 scripts = 350 print "the %(book)s book contains more than %(scripts)s scripts" % vars()  関数を使用します)。例えば 例1-11 は次のように表される。

<スパン

1.2.3.3. 例 1-11. vars関数の使用

def function(value):
    print value
function(1)
function(1.0)
function("one")


type


図書館の本には350以上のスクリプトが含まれています


1.2.4. オブジェクトタイプのチェック

Pythonは動的型付け言語です。これは、与えられた変数名が異なるコンテキストで異なる型にバインドされる可能性があることを意味します。次の例では、同じ関数が、整数、浮動小数点数、文字列に対して呼び出されています。

File: builtin-type-example-1.py

def dump(value):
    print type(value), value

dump(1)
dump(1.0)
dump("one")



is  機能  例1-12  に示すように)、変数の型をチェックすることができます。この関数は  型記述子 これはPythonインタプリタが提供するそれぞれの型に対して異なるものです。

1.2.4.1. 例1-12. 型関数の使用

File: builtin-type-example-2.py

def load(file):
    if isinstance(file, type("")):
        file = open(file, "rb")
    return file.read()

print len(load("samples/sample.jpg")), "bytes"
print len(load(open("samples/sample.jpg", "rb"))), "bytes"





<タイプ 'int'> 1
<タイプ 'float'> 1.0
<type 'string'> 1個


それぞれの型には対応する型オブジェクトがあるので  callable  演算子(object identity?)で型を確認することができます。(例  例1-13 を示す)。

1.2.4.2. 例 1-13. ファイル名とファイルオブジェクトのための型関数の使用

apply


4672バイト
4672バイト


lambda  のような関数があります。  例1-14  を使用すると、オブジェクトが呼び出し可能かどうかを(直接または  _ _call_ _ ). 関数については、メソッド。  File: builtin-callable-example-1.py def dump(function): if callable(function): print function, "is callable" else: print function, "is *not* callable" class A: def method(self, value): return value class B(A): def _ _call_ _(self, value): return value a = A() b = B() dump(0) # simple objects dump("string") dump(callable) dump(dump) # function dump(A) # classes dump(B) dump(B.method) dump(a) # instances dump(b) dump(b.method)  を実装する関数、クラス、および  _ _call_ _  メソッドがあり、これらはすべてTrueを返します。

1.2.4.3. 例1-14. 呼び出し可能な関数の使用

operator


0 は *not* callable です。
文字列は *not* callable です。
組み込み関数呼び出し可能> は呼び出し可能
8ca320での関数ダンプは呼び出し可能です。
Aは呼び出し可能
Bは呼び出し可能
結合されていないメソッド A.method> は呼び出し可能です。
8caa10 にある A のインスタンスは callable ではありません。
8cab00のBのインスタンスは呼び出し可能です。
8cab00のBインスタンスのA.methodは呼び出し可能です。


クラスオブジェクト(A、B)はどちらも呼び出し可能で、呼び出されると新しいオブジェクト(クラスインスタンス)が生成されることに注意してください。しかし、クラス A のインスタンスは呼び出し可能ではありません。なぜなら、そのクラスは  type  メソッドを使用します。

を使用することができます。  isinstance  モジュールを使って、オブジェクトが組み込み型(数、列、辞書など)であるかどうかをチェックすることができます。しかし、(基本的なシーケンスメソッドを実装したような)クラスを作るのは簡単なので、これらの型に対して明示的な型判定を行うのは良いアイデアではありません。

クラスとインスタンスを扱う場合は、もう少し複雑です。Pythonはクラスを本質的に型付けされたものとして扱いません。その代わりに、すべてのクラスは特別なクラス型であり、クラスのすべてのインスタンスは特別なインスタンス型になります。

つまり  isinstance  関数を使って、あるインスタンスが指定したクラスに属しているかどうかを調べます。この問題を解決するには  File: builtin-isinstance-example-1.py class A: pass class B: pass class C(A): pass class D(A, B): pass def dump(object): print object, "=>", if isinstance(object, A): print "A", if isinstance(object, B): print "B", if isinstance(object, C): print "C", if isinstance(object, D): print "D", print a = A() b = B() c = C() d = D() dump(a) dump(b) dump(c) dump(d) dump(0) dump("string")  この関数は、オブジェクトが与えられたクラス (またはそのサブクラス) のインスタンスであるかどうかをチェックします。  例1-15  が表示されます。  isinstance  関数を使用します。

1.2.4.4. 例 1-15. isinstance 関数の使用

File: builtin-isinstance-example-1.py

class A:
    pass

class B:
    pass

class C(A):
    pass

class D(A, B):
    pass

def dump(object):
    print object, "=>",
    if isinstance(object, A):
        print "A",
    if isinstance(object, B):
        print "B",
    if isinstance(object, C):
        print "C",
    if isinstance(object, D):
        print "D",
    print

a = A()
b = B()
c = C()
d = D()

dump(a)
dump(b)
dump(c)
dump(d)
dump(0)
dump("string")




8ca6d0にあるAインスタンス> => A
Bのインスタンス at 8ca750> => B