Perlのような言語と比較して、Pythonの制御構造の数は限られています。
- のみ
if
といいえunless
、
- 唯一
for
のシーケンスを反復処理していないことforeach
やC-スタイルfor
、
while
ループごとに条件をチェックするだけで、no do-while
、
- のみ
if-elif
といいえswitch
、
- コメント構造は1つしかあり
#
ません。すべての行について、前の行を見なくてもコメントアウトされているかどうかを確認できます。
また、ソースをインデントする方法はほぼ1つあります。創造的なインデントのほとんどの場合は、構文的に除外されます。
これにより、Pythonソースの解析が人間にとって簡単になります。
組み込み型と標準ライブラリでは、最小限の完全な試みがあります。
- 可変リストには、唯一の組み込み
list
タイプを使用します。ほとんどの操作ではO(1)であり、適切な実装を選択する必要はありません。
- 不変リストの場合も同様に、
tuple
タイプを使用するだけです。
- マップの
dict
場合、ほとんどの場合、非常に効率的な組み込みのみを使用します。どの実装を使用するかを考える必要はありません。
Python 3はこれを整数に拡張します。整数がどんなに大きくても、同じ型を使用し、強制を気にしません。
Pythonは、シンタックスシュガーを回避しようとします。しかし、時には明白な方法を明らかにするためだけに構文糖を追加します。「ではない」は特殊なケースif foo is not None
であるif not (foo is None)
ため、代わりに書くことができます。それでもfoo is not None
読みやすく、誤解されることはありません。また、考える必要はありません。明白なことを書くだけです。
もちろん、Pythonでのより複雑なことのほとんどは、いくつかの方法で実行できます。宣言または単純なスロット割り当てによってメソッドをクラスに追加できます。さまざまな創造的な方法で関数に引数を渡すことができます。これは、言語の内部がほとんど公開されているからです。
重要なのは、常に最適な方法であるカバーオールケースがあることです。他の方法が存在する場合、それらは同等の代替手段(if
およびunless
)として追加されず、単に内部動作を公開するだけです。既知の最良のメカニズムを強化することにより、そのような代替手段は徐々にではあるが着実に廃止されます(排除されません!)。
デコレータは、AOP関数呼び出しをラップします。2.6より前では、__metaclass__
マジックメンバーを使用してクラスのメタクラスを宣言する必要がありました。これにも同じデコレータ構文を使用できます。3.0より前には、バイト指向とUnicodeの2種類の文字列がありましたが、これらは誤って混在する可能性がありました。これで、唯一のUnicode str
と唯一のbinary-transparentがありbytes
、これらを誤って混在させることはできません。
"""
コメント(docstrings)を忘れないでください。これらは複数行にわたっています。