Open2

Effective Python 第3版

mmatthew_43mmatthew_43

Chapter 1 Pythonic Thinking(Pythonicな考え方):

Pythonを書く上で、多くの人の共通認識となっている考え方(Pythonicな考え方)を把握し、その考え方に沿ったコードを書くことで、コードを読む他の開発者の驚きを減らすことができる。

1. Know Which Version of Python You're Using

(使用しているPythonのバージョンを把握する)

2. Follow the PEP 8 Style Guide

(PEP 8スタイルガイドに従う)

3. Never Expect Python to Detect Errors at Compile Time

(コンパイル時にPythonがエラーを検出することを期待しない)
型ヒントを書いたとしても、型ヒントで指定した型以外の型の値が実行時に入ってくる可能性がある。

4. Write Helper Functions Instead of Complex Expressions

(複雑な式の代わりにヘルパー関数を書く)
複数のgetや初期値設定の入れ子は一見してわかりにくい処理になりがち。何をするか宣言的に表したヘルパー関数を用意する方が可読性が高い。

5. Prefer Multiple-Assignment Unpacking over Indexing

(インデックス参照よりも複数代入のアンパッキングを優先する)
n番目の値は△△などと覚えておくのは大変なので、アンパッキングして、わかりやすい名前のついた変数に代入しておく方が可読性が高くなる。

mmatthew_43mmatthew_43

6. Always Surround Single-Element Tuples with Parentheses

(単一要素のタプルは常に括弧で囲む)
括弧で囲むだけではタプルにならない。「,」で終わる単一の値は括弧があるか否かに関わらずタプルとなってしまうので、要注意。意図せずプログラムを破壊するがあるため、実装時にはタプルとしたい場合にその意図を伝えるために、括弧をつける方が良い。

7. Consider Conditional Expressions for Simple Inline Logic

(シンプルなインライン論理には条件式を検討する)
Conditional Expressionを利用することで式の入る場所にif文を差し込むことができる。
ただ、readabilityを損なう、また実装一読してわからなくなる場合には利用すべきでない。また、デバッグ用の情報を表示したい場合など、通常のif文やヘルパー関数を利用する方が良い場合もあり、Conditional Expressionを利用すると良いと明確に判断できない場合は利用しないべき。

8. Prevent Repetition with Assignment Expressions

(代入式で繰り返しを防ぐ)

9. Consider match for Destructuring in Flow Control; Avoid When if Statements Are Sufficient

(フロー制御での分解にmatchを検討する;if文で十分な場合は避ける)