モジュール



モジュールとはPythonの定義や文が入ったファイルです。 標準モジュールや第3者によって公開されているモジュールを組み合わせることで、容易に高度な処理を実現できます。また、自作のモジュールを作ることで、同じ処理を何度も記述する手間を省くことが出来ます。

モジュールの利用方法

モジュールごとインポートする方式と、モジュール内の関数だけをインポートする方式があります。

モジュールごとインポート

インポートしたモジュールのすべての関数と変数を利用できます。

1
2
3
4
5
6
7
8
9
>>> import math
>>> math
<module 'math' (built-in)>
>>> dir(math)
['__doc__', '__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']
>>> math.pi
3.1415926535897931

モジュール内の関数だけをインポート

特定の関数や変数だけをインポートします。モジュール名を指定しなくてよい反面、複数のモジュールから同一名の関数や変数をインポートすることはできません。

1
2
3
>>> from math import pi
>>> pi
3.1415926535897931

標準モジュール

Pythonをインストールすると、数百種類にも及ぶ標準モジュールが自動的にインストールされます。

Python2.5.4の標準モジュールは以下ページから確認できます。以下の節で、いくつかのモジュールの使用例を紹介します。
http://docs.python.org/release/2.5.4/modindex.html

randomモジュール

乱数モジュールです。ゲームやシミュレーションなどに必須です。

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
53
54
55
56
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'System
Random'
, 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__'
, '__builtins__', '__doc__', '__file__', '__name__', '_acos', '_ceil', '_cos', '
_e'
, '_exp', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_t
est'
, '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovari
ate'
, 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormv
ariate'
, 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sa
mple'
, 'seed', 'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvari
ate'
]

#0~1までの乱数値を返す
>>> random.random()
0.24941026919941534
>>> random.random()
0.84469831945286999
>>> random.random()
0.19237982730341463
>>> random.random()
0.81705427965050337
>>> random.random()
0.97526898857783018

#値を1つランダムに返す
>>> random.choice(["Python", "Java", "PHP"])
'Java'
>>> random.choice(["Python", "Java", "PHP"])
'Python'
>>> random.choice(["Python", "Java", "PHP"])
'PHP'
>>> random.choice(["Python", "Java", "PHP"])
'Java'
>>> random.choice(["Python", "Java", "PHP"])
'Python'

#指定範囲内の整数値をランダムに返す
>>> random.randint(0,10)
5
>>> random.randint(0,10)
8
>>> random.randint(0,10)
6

#指定範囲内の整数値で最小値との差がNの倍数のものをランダムに返す
>>> random.randrange(0,10,2)
2
>>> random.randrange(0,10,2)
6
>>> random.randrange(0,10,2)
6
>>> random.randrange(0,10,2)
2
>>> random.randrange(0,10,2)
6
>>>

reモジュール

正規表現モジュールです。高度な文字列処理を行えます。

1
2
3
4
5
6
7
8
>>> dir(re)
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'Sc
anner'
, 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__',
 '__builtins__', '__doc__', '__file__', '__name__', '__version__', '_alphanum',
'_cache', '_cache_repl', '_compile', '_compile_repl', '_expand', '_pattern_type'
, '_pickle', '_subx', 'compile', 'copy_reg', 'error', 'escape', 'findall', 'find
iter'
, 'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', '
subn'
, 'sys', 'template']
文字列分割

スペース1文字区切りは文字列のsplitメソッドで処理できますが、複数スペースの場合は正規表現モジュールを使うべき。

1
2
3
4
>>> "1 2    3".split(" ")
['1', '2', '', '', '', '3'] #複数スペースを正しく処理できない
>>> re.split(" +", "1 2    3")
['1', '2', '3'] #正規表現を使えば処理できる
マッチング

タグを抽出してみました。

1
2
3
>>> html = '<input type="text" name="name"/>something something '
>>> re.findall('<.+>', html)
['<input type="text" name="name"/>']

GAE/Pythonでの制約事項

GAE/Pythonでは、Python2.5系が動作していますが、Python2.5の標準ライブラリに含まれていても使えないモジュールがあります。また、標準ライブラリには含まれていなくてもGoogleAppEngine上では使えるモジュールもあります。

  • 標準モジュールには含まれているが使えないもの
    ファイルの書き込み、プロセスの生成、ネットワーク接続などに関するモジュールは使えません。
  • 標準モジュールには含まれていないが使えるもの
    GoogleAppEngineでは、google.appengine.extなどのモジュールが提供されています。

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player