その2の続き
- try/except/else/finallyの利点を活かすこと
- finallyは例外に関わらず呼び出されるのでクローズ処理などを行う
- try/exceptにて例外が起きない場合に実施したいコードをelseに書く
- Return Noneではなく例外をだすこと
- クロージャ内使用する変数とそのスコープの動作を理解する
- 変数の参照順序は以下の通り
- 現在の関数内の変数
- これより外部の関数内の変数
- Globalのスコープ
- ビルトインで定義されている変数
- 上記の参照順序の問題からより狭いスコープで変数に代入するとそのスコープ内の新規の変数として定義され、スコープの外側で定義された変数へは影響を与えない
- スコープ外で定義された変数に代入をしたいなら”nonlocal”をしようする
- 結果のリストを返すならGeneratorを使う
- islice(iterator, start, stop)でリストを返す
- 引数にIteratorを取る場合は気をつける
- Iter(iterator)はイテレータ自身を返すが、iter(container)ならば、新しいイテレータを返す
- __iter__(self)で簡単にIterableなコンテナを作成可能
- 可変長引数を使って、読みやすくする
- ただし、引数にイテレータをつかったり、引数の追加を行う場合には気をつける