使用方法

Pythonでは標準で使用可能なモジュールとサードパーティ製のモジュールが存在する。 基本的に使用する場合は、ソースコードの冒頭部分で

1
import module_name

でインポートできる。

from と as

1
from A import B

Aにはパッケージ名やモジュール名を指定する。

Bには取り込みたいパッケージやモジュール名またはクラスや関数名、変数名なども指定できる。

必要なもの以外をインポートすると、名前の衝突等予想外のトラブルが起こる場合があるので、必要なものだけインポートする方がbetter。

1
from A import *

Aに含まれるものをすべてインポート。Aにmethod_a()という関数がある場合、この方法ならmethod_a()と直接アクセスできるトラブルの元なので、この記法は何がインポートされるかわかっている場合以外は避けたほうが無難。

1
import A.B.C as D

長い名前のパッケージに含まれているものにシンプルな名前でアクセスできる。別名は混乱の元なので、やたらめったら使うのは避けたほうが良い。

自作モジュールのインポート

モジュールは以下の順に調べて、最も最初に見つかったものがインポートされる。

  1. 実行中のファイルと同じフォルダ
  2. カレントフォルダ
  3. 環境変数「PYTHONPATH」に列挙したフォルダ
  4. sys.pathに登録してあるフォルダ

同一ディレクトリにあるPythonのプログラムは以下のようにしてインポートできる。

  • program_a.py
1
2
3
def aprint():
    print "This is from program_a.py"
    return
  • program_b.py
1
2
3
4
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import program_a
    program_a.aprint()

実行してみる。

1
2
$ python program_b.py
This is from program_a.py

モジュールのドキュメント

以下のように3重引用符で囲んだ文字列をクラスや関数の直後に記入しておくと、 pydoc等で確認した時にわかりやすい形でクラスや関数の説明を表示してくれる。 きちんと各コメントを書いておくと、後に救われること多々あり。

以下の内容をtest.pyという名前で保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#/usr/bin/env python
#-*- coding:utf-8 -*-
"""
File info
"""
    
__author__ = "author <mail@example.com>"
__status__ = "dev"
__version__ = "1.0.0"
__date__    = "03 Feb. 2014"
    
TOP_LEVLE_VAR = 'var'
    
class TestClass(object):
    """
    Abstract of this class

    Details of this method ...
    """
        
    def test_method(self, x):
    """
    Abstract of this method
  
    Details of this method ...
    """
    return 5 * x * x + 2 * x + 1

test.py を保存したディレクトリでインタプリタを起動。インタプリタでhelp()を入力。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
>>> help()
   
help> test
test
Help on module test:
   
NAME
    test - File info

FILE
    /Users/hoge/fuga/piyo/test.py
    
CLASSES
    __builtin__.object
        TestClass
    
    class TestClass(__builtin__.object)
     |  Abstract of this class
     |  
     |  Details of this method ...
     |  
     |  Methods defined here:
     |  
     |  test_method(self, x)
     |      Abstract of this method
     |      
     |      Details of this method ...
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
DATA
    TOP_LEVLE_VAR = 'var'
    __author__ = 'author <mail@example.com>'
    __date__ = '03 Feb. 2014'
    __status__ = 'dev'
    __version__ = '1.0.0'
    
VERSION
    1.0.0
    
DATE
    03 Feb. 2014
    
AUTHOR
    author <mail@example.com>

役立つモジュール

標準モジュール

代表的なものをあげておく。ここであげたものはひと通りドキュメントに目を通しておくとよい。他にもいろいろある。

  • re: 正規表現に関するモジュール
  • datetime: 日付に関連するモジュール
  • calender: カレンダーに関するモジュール
  • mutex: 並列処理時の排他制御に関するモジュール
  • pprint: 入れ子のリストやディレクトリの表示が見やすいprint
  • copy: 浅いコピーと深いコピーを扱うモジュール
  • math: 数学関連のモジュール
  • random: 乱数生成に関するモジュール
  • os.path: ディレクトリ名やファイル名に関するモジュール
  • shutil: 高レベルなファイル操作(圧縮ファイルの操作等も)
  • sqlite3: SQLiteデータベース用モジュール
  • time: 時刻データのためのモジュール
  • argparse: コマンドラインオプション、引数などのパーサ
  • multiprocessing: 並列処理のためのモジュール
  • cPickle: データの永続化
  • json: JSON形式のエンコードおよびデコード
  • urllib: URLによる任意リソースへのアクセス
  • urllib2: URLを開くための拡張可能なライブラリ
  • sys: システムパラメータと関数
  • pydoc: 開発ドキュメント生成とオンラインヘルプに関するモジュール
  • unittest: ユニットテストフレームワーク
  • pdb: デバッグ用モジュール

サードパーティのプログラム&Python用モジュール

個人的にお世話になったプログラムとそのバインディングモジュールたち。 詳細なインストール方法はそれぞれ異なるので各モジュールのページを参照のこと。 ただし、メジャーなモジュールはpip(Pythonのモジュール管理用プログラム)でインストール可能。 基本的にpipでインストール可能なものはpipでインストールすること。

1
$ pip install modulename

検索する場合、

1
$ pip search modulename

もしpipがインストールされていない場合は、

1
$ easy_install pip

でインストールできるはず。ただし情報が古いかもしれないので、上手くいかない場合はググってください。また各モジュールの使い方は公式ドキュメントを見るかググってください。

  • MeCab: 日本語の形態素解析エンジンのモジュール。
  • CaboCha: Support Vector Machines に基づく日本語係り受け解析器のモジュール。
  • LIBSVM: Support Vector Machine(SVM)に関するモジュール。
  • NLTK: 自然言語処理に関するモジュール。
  • NumPy&SciPy: 数値計算・科学計算に関するモジュール。大規模な行列演算や、高速な計算アルゴリズムが使用できる。
  • PLI: Python Imaging Library 強力な画像処理用モジュール。
  • Matplotlib: 作図(主にグラフ)用のモジュール。
  • Beautiful Soup: HTLMやXML等のパーサ。標準モジュールにある各種パーサよりもこちらを使うことを推奨します。
  • mechanize: Webから情報をクロールするときに超便利。