モジュール
モジュールとは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などのモジュールが提供されています。