CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
こんにちは、吉政創成 菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。
今回から6章「パイソニックなコードを書こう」に入ります。
Pythonを学ぶようになると、Pythonic(パイソニック)やThe Zen of Pythonという言葉を見かける機会が出てきます。
まず、The Zen of PythonはPythonを使う際の哲学といえるもので、Pythonを美しく、シンプルに書くための心得がまとめられたものです。文書としてはPEP20がこれに該当します。このThe Zen of pythonはPythonの生みの親であるGuido氏と共に1990年代からPythonのコア開発者として長年活動してきたTim Peters氏が書いたポエムです。ちなみに「Zen」は日本の「禅」に由来しているそうです。
ここにはPythonの設計における基本的な考え方や、Pythonプログラマが持っておいて欲しい心構えがまとめられています。ところどころジョーク交じりらしいですが。
項目としては20個あるとされていますが、実際には19個で、20個目をGuido氏に書いてもらうつもりで空けておいたのに、結局空けたまま未完で終わってしまっている、というジョークでも知られているんだとか。(ジョークとかユーモアって難しいなぁ...。)
一方でPythonicは、このThe Zen of Pythonの哲学に沿って、「Pythonらしい」シンプルで読みやすいコードを書こうとする考え方を指します。特定の人が定義したものではなく、Guido氏やTim氏の思想をもとに、コミュニティの中で自然と広まった言葉であるため、文書としてまとまった定義があるわけではないようです。つまり、Pythonicなコードを書くには、「言葉で学ぶのではない、良いコードを見て感じとれ」と...いうのが基本なようです。
ちなみに、PythonのWikipedidaにはPythonicについて次のような言葉が書かれています。
"他の言語で一般的な考え方で書かれたコードではなく、Python の特に一般的なイディオムに従った考え方やコード片。"
https://ja.wikipedia.org/wiki/Zen_of_Python
ここでPythonicなコードとそうでないコード(unpythonic)が比較できるよう掲載されています。
ところで、初学者からすると、PythonicやThe Zen of Pythonという言葉より先に知るのではないかと思うのがPEP8です。このコラムでも何度か出てきていると思います。PEP8はPythonicな考え方を、具体的なルールとして示した公式のコーディング規約で、インデントや命名規則などを通じてPythonコードの可読性を保つ手助けをするものになっています。
The Zen of Pythonは[import this]を実行すると全文が表示されます。
---------------------------------------------------------------
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let’s do more of those!
---------------------------------------------------------------
The Zen of Pythonの各項目について確認していきます。
書籍では上記の原文はなく、翻訳されたもののみが紹介されています。ここでは「原文(書籍の翻訳文)」という形で引用して書いておきます。(引用P.92~95)
なお、書籍にはそれぞれに解説文が入っていますが引用せず、補足程度の短い文を書いてみます。
コードを使った具体例などが知りたい方は、以下のページで丁寧に説明されていました。詳しく知りたい方は以下のページをどうぞ。
プログラマが持つべき心構え (The Zen of Python)
それでは今回はこちらで終了です。
今回もお付き合いいただきありがとうございました。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes