2013/01/03

Pythonにまつわるアイデア:PEP 20

PEP 20」とは、別名「The Zen of Python」(禅・オブ・パイソン)。Pythonそのものの設計における基本的な考え方を表したアフォリズム集です。

Pythonコードの特徴である「シンプルさ」や「読みやすさ」の源泉となった考え方が、合計19コのことばとしてまとめられています。
  1. Beautiful is better than ugly.
  2. Explicit is better than implicit.
  3. Simple is better than complex.
  4. Complex is better than complicated.
  5. Flat is better than nested.
  6. Sparse is better than dense.
  7. Readability counts.
  8. Special cases aren't special enough to break the rules.
  9. Although practicality beats purity.
  10. Errors should never pass silently.
  11. Unless explicitly silenced.
  12. In the face of ambiguity, refuse the temptation to guess.
  13. There should be one-- and preferably only one --obvious way to do it.
  14. Although that way may not be obvious at first unless you're Dutch.
  15. Now is better than never.
  16. Although never is often better than *right* now.
  17. If the implementation is hard to explain, it's a bad idea.
  18. If the implementation is easy to explain, it may be a good idea.
  19. Namespaces are one honking great idea -- let's do more of those!

以下、日本語訳付きで順にご紹介します。原文のシンプルさとわかりやすさをなるべく再現する日本語訳を目指して書いてみました。

01

Beautiful is better than ugly.
「醜い」よりも「美しい」

02

Explicit is better than implicit.
「暗黙」よりも「明示」

03

Simple is better than complex.
「複雑」よりも「シンプル」

04

Complex is better than complicated.
でも、「複雑」でも「わかりづらい」よりはまし

* 03からつながっています

05

Flat is better than nested.
「ネスト」(入れ子状)よりも「フラット」

06

Sparse is better than dense.
「密集」よりも「ガラガラ」

07

Readability counts.
読みやすさってのは大事

08

Special cases aren't special enough to break the rules.
ルールを破ってまで作るべき特例なんてない

09

Although practicality beats purity.
「実用性」は「ピュアさ」(一貫性)に勝る、というのはそうなんだけど

* 09からつながっています

10

Errors should never pass silently.
エラーが起こっているのにそれがわからないなんてのは×

11

Unless explicitly silenced.
「そのエラーは通知しなくてもいいよ」と明示的に指定されたのなら話は別だけど

* 10からつながっています

12

In the face of ambiguity, refuse the temptation to guess.
「あいまいなもの」に出会ったら、「推測」で済ませたくなる誘惑には負けないで

13

There should be one-- and preferably only one --obvious way to do it.
何かをやるには、ストレートなやり方がひとつ、たったひとつだけあるはず

14

Although that way may not be obvious at first unless you're Dutch.
その方法は一目ではわかりにくいものかもしれないけど
(あなたがオランダ人というのなら、話は別かもね)

* 13からつながっています
* 「オランダ人」というのは、Pythonの原作者Guido van Rossumがオランダ人だからのようです


15

Now is better than never.
「やらない」よりも「今やる」

16

Although never is often better than *right* now.
「やらない」が「今すぐやる」よりいいこともよくあるけれど

* 15からつながっています

17

If the implementation is hard to explain, it's a bad idea.
説明が難しいのなら、その実装は良くないということ

18

If the implementation is easy to explain, it may be a good idea.
説明がカンタンなら、その実装は良いのかも

19

Namespaces are one honking great idea -- let's do more of those!
名前空間ってのは、すんげーアイデアなんだなぁ。これ、もっと使っていこうよ!

・・・以上です。


ちなみに、PythonのIDLE(対話型インタフェース)から
import this
と打つと、このPEP 20がずらずらーっと表示されるようなイースターエッグもあります。


参考
PEP 20 The Zen of Python

0 件のコメント: