Python チュートリアル
*********************

Tip:

  このチュートリアルは Python を初めて学ぶ *プログラマー* 向けです。プ
  ログラミングを初めて学ぶ *初心者* 向け **ではありません** 。

Python は学びやすく強力なプログラミング言語です。効率的な高レベルのデ
ータ構造と、シンプルながら効果的なオブジェクト指向プログラミングの仕組
みを備えています。洗練された構文と動的型付けを持つインタープリタ言語で
もあります。こうした特徴から、ほとんどのプラットフォームで幅広い分野の
スクリプト作成や迅速なアプリケーション開発に理想的な言語です。

Python インタープリタと充実した標準ライブラリは、Python のウェブサイト
https://www.python.org/ から無料で入手できます。主要なすべてのプラット
フォーム向けにソースコードまたはバイナリ形式で提供されており、自由に再
配布できます。このサイトでは、無料で利用できる多くのサードパーティ製の
Python モジュール、プログラム、ツールの配布物やリンク、追加のドキュメ
ントも公開しています。

C や C++ (または C から呼び出せる他の言語) で実装した新しい関数やデー
タ型を追加して、Python インタープリタを簡単に拡張できます。Python はカ
スタマイズ可能なアプリケーションの拡張言語にも適しています。

このチュートリアルでは Python 言語とシステムの基本的な概念や機能を形式
ばらずに紹介します。一般的なプログラミングの基礎知識があることを前提と
しています。実際に試せるように Python インタープリタを用意しておくと役
立ちます。ただし、例はそれぞれ単独で理解できるので、オフラインで読むこ
ともできます。

標準のオブジェクトやモジュールの説明は Python 組み込み機能リファレンス
と Python 標準ライブラリ を参照してください。 Python 言語リファレンス
では言語をより厳密に定義しています。C や C++ で拡張を書くには Python
インタプリタの拡張と埋め込み と Python/C API リファレンスマニュアル を
読んでください。Python を詳しく解説した書籍もいくつかあります。

このチュートリアルはすべての機能を網羅するものではなく、よく使われる機
能に限ってもすべてを扱うわけではありません。その代わりに Python の特に
注目すべき機能を数多く紹介し、言語の持ち味やスタイルをつかめるようにし
ています。読み終えるころには Python のモジュールやプログラムを読み書き
できるようになり、 Python 標準ライブラリ で説明されているさまざまな
Python ライブラリモジュールについてさらに学ぶ準備も整うでしょう。

用語集 にも目を通しておくと良いでしょう。

* 1. やる気を高めよう

* 2. Python インタープリタを使う

  * 2.1. インタープリタを起動する

    * 2.1.1. 引数の受け渡し

    * 2.1.2. 対話モード

  * 2.2. インタープリタとその環境

    * 2.2.1. ソースコードの文字コード

* 3. 形式ばらない Python の紹介

  * 3.1. Python を電卓として使う

    * 3.1.1. 数

    * 3.1.2. テキスト

    * 3.1.3. リスト型 (list)

  * 3.2. プログラミングへの第一歩

* 4. その他の制御フローツール

  * 4.1. "if" 文

  * 4.2. "for" 文

  * 4.3. "range()" 関数

  * 4.4. "break" 文と "continue" 文

  * 4.5. ループの "else" 節

  * 4.6. "pass" 文

  * 4.7. "match" 文

  * 4.8. 関数を定義する

  * 4.9. 関数定義についてもう少し

    * 4.9.1. デフォルトの引数値

    * 4.9.2. キーワード引数

    * 4.9.3. 特殊なパラメータ

      * 4.9.3.1. 位置またはキーワード引数

      * 4.9.3.2. 位置専用引数

      * 4.9.3.3. キーワード専用引数

      * 4.9.3.4. 関数の例

      * 4.9.3.5. 要約

    * 4.9.4. 任意引数リスト

    * 4.9.5. 引数リストのアンパック

    * 4.9.6. ラムダ式

    * 4.9.7. ドキュメンテーション文字列

    * 4.9.8. 関数のアノテーション

  * 4.10. 間奏曲: コーディングスタイル

* 5. データ構造

  * 5.1. リスト型についてもう少し

    * 5.1.1. リストをスタックとして使う

    * 5.1.2. リストをキューとして使う

    * 5.1.3. リスト内包表記

    * 5.1.4. ネストしたリストの内包表記

    * 5.1.5. リストとリスト内包表記でのアンパック

  * 5.2. "del" 文

  * 5.3. タプルとシーケンス

  * 5.4. 集合型

  * 5.5. 辞書型 (dictionary)

  * 5.6. ループのテクニック

  * 5.7. 条件についてもう少し

  * 5.8. シーケンスとその他の型の比較

* 6. モジュール

  * 6.1. モジュールについてもうすこし

    * 6.1.1. モジュールをスクリプトとして実行する

    * 6.1.2. モジュール検索パス

    * 6.1.3. "コンパイル" された Python ファイル

  * 6.2. 標準モジュール

  * 6.3. "dir()" 関数

  * 6.4. パッケージ

    * 6.4.1. パッケージから * を import する

    * 6.4.2. パッケージ内参照

* 7. 入力と出力

  * 7.1. 出力を見やすくフォーマットする

    * 7.1.1. フォーマット済み文字列リテラル

    * 7.1.2. 文字列の format() メソッド

    * 7.1.3. 文字列の手作業でのフォーマット

    * 7.1.4. 古い文字列書式設定方法

  * 7.2. ファイルを読み書きする

    * 7.2.1. ファイルオブジェクトのメソッド

    * 7.2.2. "json" による構造化されたデータの保存

* 8. エラーと例外

  * 8.1. 構文エラー

  * 8.2. 例外

  * 8.3. 例外を処理する

  * 8.4. 例外を送出する

  * 8.5. 例外の連鎖

  * 8.6. ユーザー定義例外

  * 8.7. クリーンアップ動作を定義する

  * 8.8. 定義済みクリーンアップ処理

  * 8.9. 複数の関連しない例外の送出と処理

  * 8.10. ノートによって例外を充実させる

* 9. クラス

  * 9.1. 名前とオブジェクトについて

  * 9.2. Python のスコープと名前空間

    * 9.2.1. スコープと名前空間の例

  * 9.3. クラス初見

    * 9.3.1. クラス定義の構文

    * 9.3.2. クラスオブジェクト

    * 9.3.3. インスタンスオブジェクト

    * 9.3.4. メソッドオブジェクト

    * 9.3.5. クラス変数とインスタンス変数

  * 9.4. いろいろな注意点

  * 9.5. 継承

    * 9.5.1. 多重継承

  * 9.6. プライベート変数

  * 9.7. 残りのはしばし

  * 9.8. イテレータ (iterator)

  * 9.9. ジェネレータ (generator)

  * 9.10. ジェネレータ式

* 10. 標準ライブラリをひとめぐり

  * 10.1. オペレーティングシステムとのインターフェース

  * 10.2. ファイルのワイルドカード

  * 10.3. コマンドライン引数

  * 10.4. エラー出力のリダイレクトとプログラムの終了

  * 10.5. 文字列のパターンマッチ

  * 10.6. 数学

  * 10.7. インターネットへのアクセス

  * 10.8. 日付と時刻

  * 10.9. データ圧縮

  * 10.10. パフォーマンスの計測

  * 10.11. 品質管理

  * 10.12. バッテリー同梱

* 11. 標準ライブラリをひとめぐり --- その II

  * 11.1. 出力のフォーマット

  * 11.2. 文字列テンプレート

  * 11.3. バイナリデータレコードのレイアウトの操作

  * 11.4. マルチスレッディング

  * 11.5. ログ記録

  * 11.6. 弱参照

  * 11.7. リストを操作するツール

  * 11.8. 10 進浮動小数点演算

* 12. 仮想環境とパッケージ

  * 12.1. はじめに

  * 12.2. 仮想環境の作成

  * 12.3. pip を使ったパッケージ管理

* 13. さあ何を？

* 14. 対話入力編集と履歴置換

  * 14.1. タブ補完と履歴編集

  * 14.2. 対話的インタープリタの代替

* 15. 浮動小数点演算、その問題と制限

  * 15.1. 表現誤差

* 16. 付録

  * 16.1. 対話モード

    * 16.1.1. エラー処理

    * 16.1.2. 実行可能な Python スクリプト

    * 16.1.3. 対話モード用の起動時実行ファイル

    * 16.1.4. カスタマイズ用モジュール
