Think Python 第3版
(allendowney.github.io)- プログラミングを初めて学ぶ人や、以前の学習でつまずいた人向けの Python 入門書で、第3版の紙版と電子書籍を注文できる
- 書籍全体が Jupyter ノートブック形式になっており、テキストの読解、コード実行、練習問題への取り組みを一連の流れで進められる
- 各章のノートブックは Colab でそのまま実行でき、別途インストールせずに学習を始めやすい
- 第3版では本文の改訂、一部の章順の調整、練習問題の拡充により、学習の流れを再整理している
- 各章末の ChatGPT と Colab AI の活用提案は、行き詰まった箇所で追加説明や練習問題の助けを得る補助手段として使える
初学者のための Python 入門書
- Think Python は、プログラミングに初めて触れる人、または以前に試したものの難しさを感じた人向けの Python 入門書
- 第3版の紙版と電子書籍は Bookshop.org と Amazon で注文できる
- Green Tea Press の書籍ランディングページは Think Python 3rd Edition で確認できる
- 第3版は書籍全体を Jupyter ノートブックとして構成し、テキスト、実行可能なコード、練習問題を一か所で扱う
- ノートブックは Colab で実行できるため、インストールの負担が減る
- 本文がかなり改訂され、一部の章順が入れ替えられた
- 練習問題が増えた
- 各章末には、ChatGPT と Colab AI を学習や練習問題の解答に活用する方法が含まれている
Colab ノートブックと授業活用資料
-
章別ノートブック
- 全ノートブックは19章で提供される
- 第1章: Programming as a way of thinking — Colab で実行
- 第2章: Variables and Statements — Colab で実行
- 第3章: Functions — Colab で実行
- 第4章: Functions and Interfaces — Colab で実行
- 第5章: Conditionals and Recursion — Colab で実行
- 第6章: Return Values — Colab で実行
- 第7章: Iteration and Search — Colab で実行
- 第8章: Strings and Regular Expressions — Colab で実行
- 第9章: Lists — Colab で実行
- 第10章: Dictionaries — Colab で実行
- 第11章: Tuples — Colab で実行
- 第12章: Text Analysis and Generation — Colab で実行
- 第13章: Files and Databases — Colab で実行
- 第14章: Classes and Functions — Colab で実行
- 第15章: Classes and Methods — Colab で実行
- 第16章: Classes and Objects — Colab で実行
- 第17章: Inheritance — Colab で実行
- 第18章: Python Extras — Colab で実行
- 第19章: Final Thoughts — Colab で実行
-
教員向け資料
- 解答付きノートブックは ThinkPythonSolutions GitHub リポジトリ からダウンロードできる
- 各章のクイズと書籍全体に対する総合クイズは、リクエストに応じて提供される
- 授業で Jupyter を効果的に使う方法は、オンライン書籍 Teaching and Learning with Jupyter で読める
- ノートブックベースの授業では、講師がコードを書き、学生が自分のノートブックで追随する ライブコーディング方式を活用できる
- プログラミング教育のための教員研修資料は、The Carpentries の Instructor Training で確認できる
- 原文テキストは残しつつ大半のコードを取り除いた 空のノートブックは、学習者が空欄を埋める模写練習に有用で、blank notebooks にまとめられている
1件のコメント
Hacker News の意見
このニュースは本当にうれしい。Jupyter Notebook で Practical Deep Learning for Coders を出したとき、Allen と、彼のいくつかの本も同じ方式で作ろうという話をしていた
今それが実際に進んでいて、さらに良いことに、ノートブック内でインラインのグラフィックを表示する Jupyter ベースの turtle のようなすばらしいツールまで加わっている
リリースされれば、Python プログラミングを学ぶ最高の方法になる可能性が高いと思う
以前、この本の第2版の一部を nbdev ノートブックに変換する概念実証を見せたことも覚えている: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
そのノートブックはこの HTML としてレンダリングされる: https://fastai.github.io/nbdev_cards/deck.html
AdventOfCode のようなもので新しい言語を学ぶとき、最初の作業はいつもその言語用の Jupyter イメージを作ること
Think Python 第2版は自分の人生の方向を変えた。Java の授業を一つ受けてあまりに嫌になり、プログラミングを諦めていたが、数年後ネットワークエンジニアとして働いているときに、スクリプトで解けそうな問題が出てきて、Think Python を手に取った後、Python とプログラミングそのものにのめり込むようになった
自分の人生の方向をコミュニティ/メイカー/教師の役割のほうへ変えることを考えていて、教える仕事のためのフリーランス/小規模ビジネスのアイデアがあるのだが、「ゆるいカリキュラム」の資料が必要
プロの Web 開発者として働く中で Python が必要だったことがなく、今学んでいるところ。Perl と Ruby を含め、Web 中心の言語はほぼすべて使ってきた
Python は一般的な概念を教えるのに適した言語に見えるし、参考にできる本があると助かりそう
その頃、チームの主言語が Java に決まり、静的型付けの利点を見てからは戻れなくなった
その後 Python もオプションの型サポートと、それを強制してくれる IDE のおかげでかなり進歩したが、今では静的型付け言語のほうに完全に偏っている
ユーティリティスクリプトを書くときは、bash だけを使うよりずっと洗練された Python が今でも好き。ただし完成品のアプリケーションに使う言語を選べるなら Java/Scala などを好む。Rust もすばらしいが、普通の人の大半にとって学習曲線が急すぎる
PyCharm のようなツールがサポートする Python のオプション型付けを自分で使ったことはないので、ツールのおかげで静的型付け言語に近い体験になっている可能性はある。IntelliJ Community Edition で Python の型強制を有効にして使ったことがある人がいれば、経験を聞きたい
Think Python が好きで、多くの学習者に薦めてきた。新しいプログラマー向けの本が気を配るべきさまざまな要素のバランスを本当にうまく取っている
Allen Downey は似たアプローチのほかの本もいくつも出している: https://greenteapress.com/wp/
一部は厳密さを下げる方向に少し行き過ぎていると思うが、自分が見た本は全体としてかなり良かった
以前カンファレンスで Allen と同じテーブルになったことがあり、彼の本をどれほど頻繁に薦めたり買ってあげたりしているかを話したら、彼は大げさに言っていると思ったようだった
少し話題を変えて申し訳ないが、実務経験はすでにあり、仕事をしながら積んでいるとして、中級/上級 Python 開発者向けに同じくらい質の高い資料はあるだろうか?
言語や標準ライブラリの中に、自分の知らない大きな塊がいつもあるように感じる
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
新しいバージョンが出るたびに What’s New ドキュメントを読む
それ以外では、標準ライブラリや人気のあるサードパーティパッケージのソースコードを読むのが好き。この助言は Python だけでなく、新しい言語を学ぶときや学び直すときにもおおむね当てはまる
それに Norvig の毎年の Advent of Code 実装を読むだけでも、エレガントで簡潔な Python コードを書く方法について洞察を得ることが多い
著者は最新の Python プロジェクト、主にベイズデータ分析の作業を https://www.allendowney.com/blog/ にブログ投稿していて、かなり面白く読んでいる
Python の中級から上級プログラミング向けの本には何があるだろうか? Python とプログラミング一般はすでに知っているが、Python の実力をさらに伸ばしたい
今読んでいる Fluent Python と CPython Internals くらいしか知らない
たとえば Effective Pandas 2 は、表形式データを扱う一般的なパターンを示している。その過程で内包表記、ラムダ、アンパックなどを使い、pytest でリファクタリングする方法や、データを理解するための可視化の活用も見せている
ちなみに私が著者です
Fluent Pythonで十分。残りの言語機能は公式リファレンスマニュアルを読めば理解できるようになるhttps://www.redblobgames.com/ にも、とても機知に富んだ記事が多い
あまり知られていないが、異なる制約のもとで同じ問題を解く複数のプログラミングスタイルを探究する本だ
ある程度の熟練度、つまり基本的な実務者レベルを超えると、残るのはコードを読んで書くことだけだ
関連記事:
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - 2023年4月、コメント30件
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - 2010年8月、コメント9件
運がいい。ちょうど Python のメンタリングを始めたところで、私は Downey の大ファンだ。本当に優れた教育者であり、ルネサンス的な人物だ
この本は必ずチェックするつもりだ
私もプログラミングを初めて学んだとき、この本で人生が変わった。キャリア転換というより、本の書かれ方といくつかの概念が、完全な初心者だった私に突然理解できるようにしてくれたことが大きかった
今、10〜15年後に第3版を見ると強い懐かしさを感じるし、この本はいくら薦めても足りない
以前の版の Think Java では、特にこの一節が好きだった: https://files.catbox.moe/v1vgdc.jpg
もう一つ素晴らしい部分はこれだ: