- import sysのうえ、sys.argvでコマンドラインの入力にアクセスできる
- import moduleで読み込めるが、module.関数という呼び方をしないといけない
- from A import functionとすると、使いたい関数を直接importする
- import long_module_name as hogeみたいな呼び方もできる
- パッケージという考え方
- __init__.pyというファイルがあるディレクトリを、パッケージとみなして、import対象なる
辞書の使い方
- setdefault()関数やdefaultdict()関数を使って、例外のときの値出力を簡単に記述できる
- Counterによる要素数の計算(from collections import Counter)
- OrderedDict(from collections import OrderedDict)
- deque
- pop, popleft, append, appendleft
- itertools
- tertools.chain, itertools.cycle
オブジェクト
- 継承したときにメソッドは完全にオーバーライドされる
- 親クラスの処理をしたかったら、super()を呼ぶ
- メソッドは追加できる
- property
- 非公開属性の名前のマンダリング
- __prop_nameでマンダリングして、@propertyと@var_name.setterでデコレートするのが良さそう。
- selfとクラス名を使い分けると、クラスで一つの変数を扱うことができる(C++のstaticメンバ変数)
- @classmethod, @staticmethodを使う(デコレート)
- vars関数を使うとプロパティがわかる
- 特殊メソッド
__eq__, __ne__, __lt__, __gt__, __le__, __ge__, __add__, __sub__, __mul__, __floordiv__, __truediv__, __mod__, __pow__, __str__, __repr__, __len__
- __str__などは便利だろう
- コンポジションの方がリーダブルなコードがかける。つまり、子メンバー変数にオブジェクトを持つ
- モジュールはシングルトンとして振る舞う
文字列
- バイト列にするのがエンコード
- バイト列から文字を解釈するのがデコード
- 新しいスタイル整形を使えば、左揃えや、パディングなども簡単にできる
- 正規表現で使える関数
- match, search, findall, split, sub
- 置換については下記を参照