はじめに

このサイトの目的は
Python を信頼できる
友人にすること

誰のために?

Python の基本的な文法を習い終えて、1、2年くらいした人を対象に、 ある程度、深いところまで一気に辿り着くことを目的に作成しました。

あまり堅苦しくならず暇つぶしにスマホを片手間横になりながら 読める程度のものにできたらいいなと思っています。 まだその域には全く達していませんが...

最大限頑張りましたが Python を習いたてのに人には厳しいかもしれません。 わからなかったり興味がなかったら、しばらく置いておいてください。

ここに書かれていることは、知っていた方がいいですが、知らなくてもいいことです。 無理をさせてしまい Python を嫌いになるようなことには、なって欲しくないなと思っています。

このサイトは、来ていただいた皆様をなにかすごいものにする能力は、 あるいは指針のようなものは、悔しいですが持ち合わせていません。 なにを学ぶかを決めることは、なにかを学ぶことよりも、 とてもとても難しいことだと思います。

男の子に 道をきかれた できることなら 教えてあげたい
幾米 - 地下鉄

しかし、もし Python を学ぶという道を決めているのであれば、 このサイトは Python を何かをする上での、 よき友人にすることはできるのではないかと思っています。

よき友人って?

なんでもしてくれる人がよき友人ではないと思います。では、よき友人とはなんでしょうか。 自分のことを支えてくれる人であり、また自分も理解している人だと思います。

Python を完全に理解することがこのサイトの目的ではありません。 もう少し具体的にこのサイトの目的について言えば「公式ドキュメントを読めばわかるようになること」です。 さらに言えば Python という言語そのものについては「自分で調べればなんとなかなる」くらいまでに持ち上げることです。

調べることは簡単です。しかしどうやって調べたらいいかもわからないときは、途方に暮れてしまいます。 ある程度のところまで来ると、通常の Qiita やブログの記事がなくなってきて、 公式ドキュメントを直接のぞいて見ざる得なくなります。

しかし、公式ドキュメントは、かなり難しいです。 これは公式ドキュメントが、プログラミング経験者で Python を初めて触る人を対象に書かれているからです。

しかも、さらに悪いことに、ドキュメントもいまいちわからず、 直接 CPython のコードを読まないといけないシーンも出て来るそうです。 自分は、まだ、そこまで深いことはしていないのですが。

Python の言語仕様というものは、確かに存在します、 しかし大抵の場合は、インタープリタの実装を書き起こしただけですし、 あるいは説明不足だったりします。
There is a language specification but in many cases it just codifies what the interpreter does or is even lacking.
私が見たい Python - The Python I Would Like To See

リスト中で、値 x を持つ最初の要素を削除します。該当する項目がなければエラーとなります。 (え?「値」って何!?)
list.remove(x) - Python チュートリアル

こちらは array の方が若干速いですが・・・ 速い方の array で1分以上かかっているので、 先頭から削除はやったら即死の禁じ手です。 (え?なんで!?)
あなたのPythonを爆速にする7つの方法

どれも、一瞬、面食らってしまう文章です。このサイトでは、Python の基本的な文法を理解した人が、 これらの文章を理解できるところまで、いっきに達することを目的にしています。

できることとできないことを見極めることができれば、 きっと Python は、仕事や研究で苦しい時も支えてくれる、 信頼できる友人になってくれると思っています。

親友ではありません、ただの戦友です。
荒巻大輔 - 攻殻機動隊

どうやって?

Python が、どのようにして動いているのか How、なぜそのように動いているのか Why について理解を深めます。

題材に取り扱うのは、最初に習う オブジェクト, if 文, for 文 という、 全てありきたりなものを題材にします。 しかし、改めて見ると、これらは、意外と奥が深いものです。

カテゴリは大きく分けて3つです。 まず、オブジェクトについて焦点を当てます。 次に、型について焦点を当てます。 そして、名前空間について焦点を当てます。

なぜ名前空間に触れるかというと、 結局、オブジェクト指向と絡みがあるからです。

なんで書いたの?

昔 C 言語はおろか PHP にさえ苦しんでいた自分には、 可読性を重視して設計された Python は触っていて、心地いいものでした。

Guido やほかの Python 開発者たちが何を考え、配慮してくれたか、知りたくもありました。 また調べてみたら、今度はそれを誰かに喋りたくなったからです。

どの作品も、よくできた小説なら必ず与えてくれるものをそなえている — いっときのあいだ、みなさんの心にある現実の重荷を忘れさせ、今までに行ったことのない場所へつれていってくれるはずだ。
スティーブン・キング, スタンドバイミー, 冒頭「はじめに」で