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 がずらずらーっと表示されるようなイースターエッグもあります。

参考