編集者の選択
* 始めるための敷居が低い 8 歳のチャーリーは、個人的な経験を通じて、本に書かれている Python 構文の基本知識を理解できるだけでなく、独自の小さなプログラムを書くこともできます。
* 幅広い知識をカバーし、知識体系は完全かつ体系的であり、「Baidu 用のプログラミング」はもう必要ありません。
※事例はビッグデータ表示、Webクローラ、ゲームなどPythonのホットな応用分野を扱った実用性の高いものとなっており、就職は難しくありません。
※110問の練習問題・面接の質問とその解答 プログラミング本は読むだけでなく実践が必要であり、知識と行動を統合して初めてスキルの真の教典を得ることができます。
* 10,000時間以上のオフライン指導経験で磨かれたマスターレベルの説明力 奥深い原理をシンプルな比喩で表現し、学べばすぐに理解でき、読めばすぐにマスターできる。
* 魅力的な付加価値サービス: 著者は、学習とコミュニケーションのためのサポート Web サイト、および著者個人のオンライン Q&A WeChat グループと QQ グループを提供します。
簡単な紹介
『クレイジー Python レクチャー ノート』は、初心者が Python を始めるのに適した本であるだけでなく (8 歳の子供は、出版される前にこの本の多くの章を学び、独自のプログラムを作成しました)、また、本でもあります。この本は、ネットワーク プログラミング、データ分析、Web クローラーなど、企業向けの実践的な知識を多数カバーしているため、Python での雇用に適しています。
『Crazy Python 講義ノート』は、Python プログラミングを包括的かつ徹底的に紹介します。本の内容は大きく 4 つのパートに分かれており、第 1 パートでは、Python の基本的な構文構造、Python 関数プログラミング、Python クラス、およびオブジェクト、モジュール、パッケージや例外処理などのコア構文、2 番目のパートでは主に Python の一般的に使用される組み込みモジュールとパッケージを紹介します。このパートには、Python の JSON、正規表現のサポート、コンテナ関連のクラス、コレクション パッケージ、Tkinter GUI プログラミング、 IO プログラミング、データベース プログラミング、同時プログラミング、ネットワーク通信プログラミングなど。コンテンツのこの部分は、Python プログラミングを習得するための核心であるだけでなく、Python の進歩のための重要な基礎でもあります。3 番目の部分では、主に Python 開発のエンジニアリング面を紹介します。 Python プログラムの形式に準拠したドキュメントの書き方を含む、コメント、ヘルプ ドキュメントを生成するためのドキュメント コメントの抽出、Python プログラムのテスト ケースの作成、プログラムのパッケージ化など。4 番目のパートは「Python プロジェクトの実践」に属します。 pygame, Matplotlib, Pygal, Scrapy などのサードパーティ パッケージを紹介します。このプロジェクトでは、Python ゲーム開発、ビッグ データ表示、Web クローラーなどの人気のスキルを紹介します。特に Web クローラーとビッグ データ表示は間違いなく Python で最も人気のあるジョブです。瞬間。
『Crazy System』と同様に、『Crazy Python 講義ノート』でもわかりやすい説明を心がけていますが(何といってもこの本は 8 歳の子供でも読めます)、 「クレイジーシステム」は決して「簡単」「入門」ではありませんが、この本で取り上げられているPythonの奥深さと広さは、他の多くの本に匹敵するものではありません。 、製図板、デスクトップピンボール、合金スラグ、ビッグデータ表示、各国のネットワークベースのGDP比較、クローラーベースの採用ホットスポット分析、クローラーベースの高精細画像ダウンロード、Scrapy+Seleninumに基づくWeiboログイン...これらのケースを設計する本来の目的は、「シンプル」や「入門」ではなく、読者が学んだことを応用し、プログラミングへの誇りを刺激し、プログラミングに対する内なる情熱に火をつけることができるようにすることです。したがって、簡単な絵しか持っていない読者は、この本を選択しないことをお勧めします。 「Crazy Python Handouts」の放課後演習には、合計 110 の段階的な Python 演習 (面接の質問) が含まれており、読者はこれらの演習を使用して、学んだ内容を定着させ、面接に備えることができます。読者が放課後の演習やプログラミングのアイデアの解決策を入手する必要がある場合は、http://www.crazyit.org サイトにログインするか、「Crazy Books」WeChat サービス アカウントをフォローしてください。
『Crazy Python 講義ノート』は、Python プログラミングを徹底的にマスターしようとしているすべての読者に向けて書かれており、あらゆるレベルの Python 学習者および実務者が読むのに適しており、大学の教育訓練機関の Python 教材としても適しています。ただし、Python に少しだけ触れたい場合は、この本は大きすぎるため、読むのには適していません。
著者について
Li Gang はソフトウェア開発で 10 年以上の経験があり、Crazy Software Education Center の教育ディレクターです。 Crazy Java Training Camp の創設者であり、Crazy Java システムに関するオリジナル本の著者。広東工科師範大学コンピュータサイエンス学部非常勤准教授、CSDN客員講師。訓練を受けた学生は、Tencent、Alibaba、Huawei、IBM、NetEase、Vipshop、China Telecom Pacific などの有名企業に就職しています。彼は中国のハイエンド IT テクノロジ書籍の著名な作家であり、『Crazy Java 講義ノート』、『Crazy Android 講義ノート』、『Lightweight Java EE Enterprise Application Practice』、『Crazy Front-End』などの書籍を出版しています。開発講義ノート』、『クレイジーHTML5/CSS3/JavaScript講義ノート』。中でもCrazy Javaシステム書籍は長年蓄積され市場で高い評価を得ており、何度も重版を重ね、10万部を超える書籍も多数あり、多くの「985」や「」の教材として選ばれています。 211 インチの大学向け。一部の書籍は繁体字中国語に翻訳され、台湾、中国にライセンスされています。
目次
第1章 Python言語の概要と開発環境 1
1.1 Python 2 の概要
1.1.1 Python 2 の簡単な歴史
1.1.2 Python 3の機能
1.2 Pythonプログラム実行の仕組み3
1.3 Python 4開発の準備
1.3.1 Windows への Python 5 のインストール
1.3.2 Linux への Python 6 のインストール
1.3.3 Mac OS X への Python 7 のインストール
1.4 最初の Python プログラム 8
1.4.1 Pythonソースプログラムの編集8
1.4.2 IDLE を使用した Python プログラムの実行 8
1.4.3 コマンドラインツールを使用した Python プログラムの実行 9
1.5 対話型通訳 11
1.6 この第 12 章の概要
この章の演習 12
第 2 章 変数と単純な型 13
2.1 単一行コメントと複数行コメント 14
2.2 変数 15
2.2.1 Python は型付けが弱い言語です 15
2.2.2 print 関数を使用して変数を出力する 16
2.2.3 変数の命名規則 17
2.2.4 Python キーワードと組み込み関数 18
2.3 数値型 19
2.3.1 整数型 19
2.3.2 浮動小数点型 21
2.3.3 複数数21
2.4 文字列の概要 22
2.4.1 文字列とエスケープ文字 22
2.4.2 文字列の連結 23
2.4.3 表現と文字列 23
2.4.4 input と raw_input を使用してユーザー入力を取得する 24
2.4.5 長い文字列 25
2.4.6 生の文字列 26
2.4.7 バイト 26
2.5 文字列の詳細な操作 28
2.5.1 エスケープ文字 28
2.5.2 文字列のフォーマット 29
2.5.3 配列相関法 31
2.5.4 ケース関連のメソッド 32
2.5.5 空白の削除 33
2.5.6 関連メソッドの検索と置換 34
2.5.7 分割および結合方法 35
2.6 オペレーター 36
2.6.1 代入演算子 36
2.6.2 算術演算子 37
2.6.3 ビット演算子 39
2.6.4 拡張代入演算子 42
2.6.5 インデックス演算子 42
2.6.6 比較演算子と bool 型 42
2.6.7 論理演算子 44
2.6.8 三項演算子 45
演算子 46 の 2.6.9
2.6.10 演算子の結合性と優先順位 46
2.7 この章の概要 47
この章の演習 47
第 3 章 リスト、タプル、および辞書 49
3.1 シーケンスの概要 50
3.1.1 Python のシーケンス 50
3.1.2 リストとタプルの作成50
3.2 リストとタプルの一般的な使用法 51
3.2.1 インデックスを介した要素 51 の使用
3.2.2 サブシーケンス 51
3.2.3 追加 52
3.2.4 乗算 52
演算子 53 の 3.2.5
3.2.6 長さ、最大値と最小値 53
3.2.7 シーケンスのパッケージングとシーケンスのアンパック 54
3.3 リスト 55 の使用
3.3.1 リストの作成 55
3.3.2 リスト要素の追加 56
3.3.3 リスト要素の削除 57
3.3.4 リスト要素の変更 58
3.3.5 リストのその他の一般的なメソッド 59
3.4 辞書の使用 61
3.4.1 辞書の概要 61
3.4.2 辞書の作成 62
3.4.3 辞書の基本的な使い方 63
3.4.4 辞書の一般的なメソッド 64
3.4.5 辞書を使用して文字列をフォーマットする 67
3.5 この章の概要 67
この章の演習 67
第 4 章 プロセス制御 68
4.1 シーケンシャル構造 69
4.2 if 分岐構造 69
4.2.1 70 のインデントを忘れないでください
4.2.2 72 を任意にインデントしないでください
4.2.3 コロン 73 を忘れないでください
4.2.4 if 条件の種類 73
4.2.5 if 分岐 74 の論理エラー
4.2.6 if 式 75
4.2.7 pass ステートメント 75
4.3 アサーション 76
4.4 ループ構造 76
4.4.1 while ループ 77
4.4.2 while ループを使用してリストとタプルを走査する 78
4.4.3 for-in ループ 79
4.4.4 for-in ループを使用したリストとタプルの走査 79
4.4.5 for-in ループを使用した辞書の走査 80
4.4.6 else のループ 81
4.4.7 入れ子になったループ 83
式 84 の 4.4.8
4.4.9 共通ツール機能 86
4.5 制御ループ構造 87
4.6 簡単なテスト 90
4.7 この章の概要 98
この章の演習 98
第 5 章 関数とラムダ式 101
5.1 機能の概要 102
5.2 関数のパラメータ 106
5.3 ローカル関数 118
5.4 高度な機能内容 119
5.5 ローカル関数とラムダ式 122
5.6 この章の概要 124
この章の演習 124
第 6 章 クラスとオブジェクト 125
6.1 クラスとオブジェクト 126
6.2 方法 132
6.3 メンバー変数 137
6.4 隠蔽とカプセル化 142
6.5 クラスの継承 144
6.6 Python 149 のダイナミクス
6.7 ポリモーフィズム 153
6.8 列挙型クラス 156
6.9 この章の概要 159
この章の演習 159
第 7 章 例外処理 160
7.1 例外の概要 161
7.2 例外処理メカニズム 162
7.3 raise を使用して例外 171 を発生させる
7.4 Python の例外伝播の軌跡 175
7.5 例外処理ルール 177
7.6 この章の概要 179
この章の演習 179
第 8 章 Python クラスの特別なメソッド 180
8.1 一般的な特殊メソッド 181
8.2 反射に関連するプロパティとメソッド 186
8.3 シーケンスに関連する特別なメソッド 189
8.4 発電機 193
8.5 演算子のオーバーロードの特別な方法 197
8.6 この章の概要 205
この章の演習 205
第 9 章 モジュールとパッケージ 206
9.1 モジュール式プログラミング 207
9.2 モジュールのロード 212
9.3 パッケージの使用 219
9.4 モジュールのコンテンツを表示する 224
9.5 この章の概要 226
この章の演習 226
第 10 章 共通モジュール 227
10.1システム228
10.2 OSモジュール231
10.3 ランダム 234
10.4倍 235
10.5 JSON サポート 238
10.6 正規表現 244
10.7 コンテナ関連のクラス 256
10.8 コレクション未満のコンテナーは 265 をサポートします
10.9 機能関連モジュール 273
10.10 この章の概要 283
この章の演習 283
第 11 章 グラフィカル インターフェイス プログラミング 285
11.1 Python GUI ライブラリ 286
11.2 Tkinter GUI プログラミングのコンポーネント 287
11.3 レイアウトマネージャー 293
11.4 イベント処理 299
11.5 Tkinter 304 の共通コンポーネント
11.6 ダイアログ 330
11.7 メニュー 342
11.8 Canvas 349 での描画
11.9 この章の概要 371
この章の演習 371
第 12 章 ファイル I/O 372
12.1 pathlib モジュールを使用したディレクトリの操作 373
12.2 os.path を使用したディレクトリの操作 379
12.3 fnmatch を使用してファイル名一致を処理する 380
12.4 ファイルを開く 381
12.5 ファイルの読み取り 383
12.6 ファイルの書き込み 391
12.7 OSモジュールのファイルおよびディレクトリ機能 393
12.8 tempfile モジュールを使用して一時ファイルと一時ディレクトリを生成する 398
12.9 この章の概要 399
この章の演習 400
第 13 章 データベースプログラミング 401
13.1 Python データベース API 402 の概要
13.2 SQLite データベースの操作 404
13.3 MySQL データベースの操作 417
13.4 この章の概要 427
この章の演習 427
第 14 章 同時プログラミング 428
14.1 スレッドの概要 429
14.2 スレッドの作成と起動 431
14.3 スレッドのライフサイクル 434
14.4 制御スレッド 438
14.5 スレッドの同期 440
14.6 スレッド通信 447
14.7 スレッドプール 454
14.8 スレッド関連クラス 458
14.9 マルチプロセス462
14.10 この章の概要 470
この章の演習 470
第 15 章 ネットワークプログラミング 471
15.1 ネットワークプログラミングの基礎知識 472
15.2 Python の基本的なネットワーク サポート 474
15.3 TCP プロトコルに基づくネットワーク プログラミング 486
15.4 UDP プロトコル 500 に基づくネットワーク プログラミング
15.5 電子メールサポート 505
15.6 この章の概要 511
この章の演習 512
第 16 章 ドキュメントとテスト 513
16.1 pydoc を使用してドキュメントを生成する 514
16.2 ソフトウェアテストの概要 519
16.3 文書テスト 523
16.4 単体テスト 525
16.5 PyUnit の使用 (単体テスト) 529
16.6 この章の概要 540
この章の演習 540
第 17 章 パッケージ化と公開 541
17.1 zipapp モジュールの使用 542
17.2 PyInstaller を使用して実行可能プログラムを生成する 544
17.3 この章の概要 547
この章の演習 547
第18章 メタルスラッグ 548
18.1 メタルスラッグゲームの紹介 549
18.2 pygame 550 の概要
18.3 ゲームインターフェイスコンポーネントの開発 553
18.4 「役割」の追加 566
18.5 適切な地図の描画 575
18.6 効果音を追加する 577
18.7 ゲームシーンの追加 579
18.8 この章の概要 583
この章の演習 583
第 19 章 データの視覚化 584
19.1 Matplotlib を使用してデータ グラフを生成する 585
19.2 機能豊富なデータグラフ 597
19.3 Pygal を使用してデータグラフを生成する 606
19.4 Pygal 609 でサポートされる一般的なデータ グラフ
19.5 データの処理 617
19.6 この章の要約第 629 章
この章の演習 629
第 20 章 ウェブ クローラー 630
20.1 Scrapy 631 のインストール
20.2 クローラーを使用して採用情報をクロールおよび分析する 634
20.3 アンチクローラーへの対処 646
20.4 この章の概要 657
この章の演習 657
一部の章は第 2 レベルの見出しのみに予約されています。完全な目次については、本書を参照してください。
序文/序文
序文
この本が生まれたのは全くの偶然で、息子がプログラミングを学びたかったからです。プログラミング興味のあるクラスに登録しようとしたら満席で登録できなかったし、人生に対して好奇心旺盛な子だったので、残念そうな目をしている彼の目を見て、そっちのほうがいいのではないかと思いました。だって、私は以前にも教えたことがあるし、他の人の子供たちもたくさんいるのですから。
私の考えは、彼に学び、教えやすい言語を選ぶことです。何しろ彼はまだ 8 歳の子供ですから。まず、JavaとCは除外しました。この2つの言語はよく使いますが、子供が始めるには少し退屈です。SwiftやKotlinも検討しました。すぐにモバイルゲームを作りたいと思った後、動作環境を整えるのが少し面倒だったので、解釈して実行できるスクリプト言語を選ぶべきだと思い、Python か Ruby を考えました。後でその面白さを知りました。授業ではPythonを教えていたので、Pythonを選択しました。
そこで、彼は独自の Python 学習の旅を始めました。そして私は完全に行き詰まってしまいました。彼は問題があるたびに私に尋ねました。これは絶対にうまくいきません。彼が私に迷惑をかけないよう、彼が一人で読める本を見つけなければなりません。私は非常にうるさい人間です。たくさんの本を探しましたが、適切なものはほとんどありませんでした。簡単に始められる本もありますが、Python 独自の知識体系に基づいてまったく説明されておらず、簡単に説明しているだけです。わかりやすくするために、少し体系的に書かれている本もあれば、理解するのが難しい本もあります。通常、変数の概念を簡単に説明できる本はほとんどありません。実際、初心者は変数の概念的な定義を知る必要はなく、変数を小さな「入れ物」とみなして、変数に値を代入するということは変数に物を「ロードする」ことを意味することを理解するだけで十分です。それなら、私も他の人のためにたくさんの本を書いてきたのですから、自分でも一冊書いたほうがいいかもしれません。
この本を書くにあたり、私は 2 つのことを念頭に置いていました。
1. 説明はできるだけ簡単にし、あいまいな概念を避けてください。
プログラミングでは、まずは自分でプログラミングして簡単なプログラムを動かせるようにすることが大切です。編集すればするほど、それらの概念の意味が自然と浮かび上がってきます。それは、テーブルを一度も見たことがない宇宙人が地球にやって来たようなものです。テーブルの概念を教え続ける人を見つけてください。彼はまずテーブルの概念を理解する必要があります。宇宙人は非常に混乱しているはずです。別の方法を試してみてください。:たくさんのテーブルを見つけて並べて、彼に次から次へとテーブルを見せて、書かせたり、コンピューターを使わせたり、テーブルで食事をさせたり、あるいはテーブルを分解して見せたりすれば、エイリアンはすぐに理解できると思います。」テーブルとは何ですか?」プログラミング初心者にとって、彼らは地球に来たばかりの宇宙人ではないでしょうか?
2. 知識システムは完全であり、Python の内部ロジックに従っている必要があります。
これまでずっと、私が書く本は通常より厚く、より多くの内容が含まれています。これは私のこだわりの性格に関係しています。何かをやるからには、それをうまくやるために最善を尽くさなければなりません。そうでない場合は、やらないでください。産業レベルのプログラミング言語であるこの言語はおもちゃではなく、それ自体に非常に多くの知識ポイントが含まれています。学ぶかどうかに関係なく、プログラミング言語自体の内容はそこにあります。著者がそれを書くかどうかに関係なく、プログラミング言語自体の内容はそこにあります。本を書くときは常に「十分役立つ」ものにするよう心がけていますが、少なくともこの本を真剣に勉強した後は、プログラミングに関する質問があったときに Baidu に質問する必要はなくなります。
知識体系を整え、その内容を詳しく解説する必要があるので、当然、本の分量も長くなります。同じ知識内容であれば、解説が詳しく書かれた分厚い本と、表面的で薄い本のどちらが理解しやすいでしょうか?
知識内容が同じであるという前提で、内容が濃く解説が詳しい本が理解できないのに、薄っぺらな本を読んでも理解できるでしょうか?これはまったく意味がありません。
しかし、何人かの読者はこう言いました、そして私もそれは理解できますが、見えなければ存在しないふりをすればいいという「ダチョウの考え方」を持ったのは彼が初めてではありません。一部の本が薄い理由は、単純に 2 つの知識点をカバーしていないからです。これもカバーしていない、あれもカバーしていないのです。確かに内容が少ないので読みやすいです。数学を学ぶのと同じで、「1+1は2だ」ということだけ教えれば、もちろん単純で覚えやすいのですが、実際にやってみると、「あれ?」ということがわかります。では、2 プラス 3 は 5 になりますか?数学と掛け算?そして分割?その後、やり方が分からず、理解もできないことが分かり、その結果、問題が発生したときは Baidu を使うようになりました。これらは、「Baidu 用に」プログラムを作成するいわゆる開発者です。こうした開発者は、「プログラマーであることはとても疲れるし、問題を解決するのに半日、さらには 1 日かかることもよくあります。実際、彼らはまったくデバッグをせず、ただ他の人のコードを探して試しているだけです。」と嘆くことがよくあります。幸運にも適切なコードを見つけることができれば、問題は解決されます。解決済み; 適切なコードが見つからない場合は嘆くだけです。
上記 2 点を踏まえて作成しているため、初心者にとって本書は敷居が低く、ほとんどの読者は本書の内容を勉強すればすぐに自分で Python プログラムを作成し、実行できるようになりますが、また、この本を読み終えるにはある程度の忍耐力も必要です。確かにこの本には多くの内容があり、後半の内容は実践的なアプリケーション開発をより指向しています。
プログラミング本は「読む」だけでなく、故・王陽明が提唱した「知識と行動の一体化」を「実践する」ための本でもあります。この本を学習するには、読者は本の各サンプル プログラムを注意深く練習する必要があり、また、本の各章の最後に提供されている 110 の Python 練習問題 (面接の質問) を注意深く解く必要があります。 -授業演習、プログラミング アイデアについては、http://www.crazyit.org にログインするか、「Crazy Books」WeChat 公式アカウントをフォローしてください (携帯電話を取り出して、表紙の端にある QR コードをスキャンしてください)。 。
この本の特徴は何ですか?
本書は単なる Python 入門書ではなく、敷居は非常に低いものの、知識体系は非常に充実しています。まとめると、本書の特徴は以下の3つです。
1. 説明がわかりやすく敷居が低い。
この本を作成した本来の目的がこの本の出発点を決定します。この本は、あいまいな概念に固執するのではなく、わかりやすい比喩を使用して概念を紹介し、口語的な方法でプログラミングを紹介し、明確なロジックを使用するよう努めます。 . アイデアを説明します。
読者の読みにくさを軽減するために、この本のコード コメントは非常に詳細に記載されており、コード 2 行ごとにほぼ 1 行のコメントが含まれています。この本のすべてのプログラムのキー コードは、読者がこれらのプログラムのキー ポイントをすぐに見つけられるように太字でマークされています。
2.ケース主導でプログラミングへの情熱を刺激する
この本はナレッジ ポイントのプレゼンテーションではなく、ナレッジ ポイントを実際のプロジェクトの開発に統合することに特化しています。そのため、この本にはバックギャモン ゲーム、製図ボード、デスクトップ ピンボール、合金のスラッグ、ビッグ データなど、Python の事例が多数含まれています。各国の一人当たりGDPの比較、クローラーベースの採用ホットスポット分析、クローラーベースの高精細画像ダウンロード、Scrapy+SeleniumベースのWeiboログイン…などを書いてプログラミングの楽しさを知っていただければ幸いです。これらのプログラム。
3.企業開発の実戦に対応する完全なナレッジシステム
本書は平易な解説を心がけていますが、決して単純な内容ではなく、Python 言語自体の文法を網羅的に網羅しているだけでなく、Python の一般的な技術や、ビッグデータの表示やクローラとして、読者を企業開発の実戦へと導きます。
この本は誰に向けたものですか?
単に Python に取り組みたいだけの場合、この本はあなたには適していません。お子様がこの本の学習に興味がある場合は、最初に本の前半を読むように誘導できます。Python を完全にマスターしたい場合は、ビッグ データ分析、Web クローラー、その他の実際のエンタープライズ開発プロジェクトを解決するために Python をプログラミングして使用する場合は、この本を選択して注意深く学習する必要があります。この本があなたの内なる潜在的なプログラミングへの情熱に火をつけ、食事と睡眠を忘れるようになれば幸いです。