入門Python3 を読む~Python3の基礎まとめ~後編
後編です。
本の返却期限が迫っているので、気になったところだけ書きます。
7章 プロのようにデータを操る
Unicode HOWTO — Python 3.5.2 ドキュメント
・書式指定
n = 42 f = 7.03 s = 'string cheese' '{} {} {}'.format(n, f, s) '42 7.03 string cheese' '{2} {0} {1}'.format(n, f, s) 'string cheese 42 7.03' d = {'n':42, 'f':7.03, 's':'string cheese'} '{0[n]} {0[f]} {0[s]} {1}'.format(d, 'other') '42 7.03 string cheese other'
詳しくはここが参考になった
Python3での文字列フォーマットまとめ 旧型で生きるか、新型で生きるか - Qiita
・正規表現とのマッチング
正規表現は、標準モジュールであるreが提供している。
特殊文字に関しては公式ドキュメントが分かりやすかった。
6.2. re — 正規表現操作 — Python 3.5.2 ドキュメント
re.match(pattern, source)
sourceの先頭がパターンに一致しているか
re.search(pattern, source)
sourceにパターンが含まれているか
match() と search() はマッチオブジェクトを返します。
6.2. re — 正規表現操作 — Python 3.5.2 ドキュメント
re.findall(pattern, source)
matchとsearchは1つマッチが見つかったらそこで処理を終えていたが、findallはすべてのマッチをリストで返す。
import re source = 'Young Frankenstein' m = re.findall('n', source) m ['n', 'n', 'n', 'n'] print(len(m)) 4
もちろん、特殊文字でパターンを指定できる。
m = re.findall('n.', source) m ['ng', 'nk', 'ns'] m = re.findall('n.?', source) m ['ng', 'nk', 'ns', 'n']
re.split(pattern, source)
パターンで文字列を分解し、部分文字列のリストを返す
import re source = 'Young Frankenstein' m = re.split('n', source) m ['You', 'g Fra', 'ke', 'stei', '']
sub(pattern, source)
マッチした部分を置換を行い、文字列を返す
import re source = 'Young Frankenstein' m = re.sub('n', '?', source) m 'You?g Fra?ke?stei?'
・structによるバイナリデータの変換
本での説明は分かりづらいので、以下参照。今までもお世話になったモジュールです。
7.1. struct — バイト列をパックされたバイナリデータとして解釈する — Python 3.5.2 ドキュメント
8章 データの行き先
9章 ウェブを解きほぐす
10章 システム
ここにまとめるよりも、必要となったときに本を参照した方が良いと思ったので飛ばします。
11章 並行処理とネットワーク
この章は難しかったので、個別で勉強記事をつくるかもです。
こういうのは使いながら覚えていったほうが良いですね。
ネットワーク関連に関しては省略した(こちらも個別記事をつくるかも)。
・プロセス
17.2. multiprocessing — プロセスベースの並列処理 — Python 3.5.2 ドキュメント
・スレッド
17.1. threading — スレッドベースの並列処理 — Python 3.5.2 ドキュメント
スレッドは、I/O(Input/Output)バウンド問題の解決のために使う。
CPUバウンド問題は、プロセス、ネットワーキング、イベントを使う。
・gevent
本にはpython3には移植されていないとありますが、
Gevent runs on Python >= 2.6, Python >= 3.3, or PyPy >= 4.0.1 (but not PyPy3) (Note: PyPy is not supported in Windows). On all platforms, installing setuptools is recommended (this is done automatically if working in a virtual environment).
引用元: https://pypi.python.org/pypi/gevent
とあるのでpython3でも使えそうですね。
What is gevent? — gevent 1.2.0.dev0 documentation
・twisted
非同期のイベント駆動型ネットワーキングフレームワーク。
こちらも本ではpython3には移植されていないとありますが、インストール出来ますね。
・asyncio
18.5. asyncio – 非同期 I/O、イベントループ、コルーチンおよびタスク — Python 3.5.2 ドキュメント
12章 パイソニスタになろう
なりたいですね。
・unittest
import unittest class TestCap(unittest.TestCase): #テストメソッドの前に呼び出される def setUp(self): pass #テストメソッドの後に呼び出される def tearDown(self): pass def test_one(self): '''テスト内容を書く''' pass def test_two(self): '''テスト内容を書く''' pass if __name__ == '__main__': unittest.main()
26.4. unittest — ユニットテストフレームワーク — Python 3.5.2 ドキュメント
27.3. pdb — Python デバッガー — Python 3.5.2 ドキュメント
・エラーメッセージのロギング
16.6. logging — Python 用ロギング機能 — Python 3.5.2 ドキュメント
Logging HOWTO — Python 3.5.2 ドキュメント
後半はかなり端折ってしまったので、ブログにあげるか悩みましたが、あとで自分で調べやすくするために公開しておきます