# Python チュートリアル

Python は簡単に習得でき、それでいて強力な言語の一つです。Python は高レベルなデータ構造を効率的に実装していて、オブジェクト指向プログラミングに対しても、単純ながら効果的なアプローチをとっています。洗練された文法とデータ型を動的に決定する機能、そしてインタプリタであるという特徴から、Python はほとんどのプラットフォームの幅広い対象領域において、スクリプティングや迅速なアプリケーション開発のための理想的な言語になっています。

Pythonインタプリタ自体と膨大な標準ライブラリは、ソースコード形式や、主要なプラットフォーム向けのバイナリ形式で、Python Web サイト https://www.python.org/ から無料で入手でき、かつ無料で再配布できます。また、Python Webサイトでは、無料で手に入るたくさんのサードパーティ製 Python モジュールから、プログラム、ツール類、その他のドキュメントに至るまで、配布物やポインタの情報を公開しています。

Python インタプリタは、C 言語や C++ 言語 (あるいはその他の C 言語から呼び出せる言語) で実装された新たな関数やデータ構造を組み込んで簡単に拡張できます。Python はまた、カスタマイズ可能なアプリケーションを作るための拡張機能記述言語としても適しています。

このチュートリアルでは、Python の言語仕様と仕組みについて、基本的な概念と機能をざっと紹介します。Python インタプリタが手元にあれば、自分で試しながら学ぶ助けになりますが、例題は全て自己完結しているので、オフラインでも十分読めます。

標準のオブジェクトやモジュールの記述については、 Python 標準ライブラリ を参照してください。 Python 言語リファレンス には、より形式的な言語の定義が書いてあります。 C 言語や C++ 言語で拡張モジュールを書くなら、 Python インタプリタの拡張と埋め込み や Python/C API リファレンスマニュアル を参照してください。他にも、 Python について広く深くカバーしている書籍はいくつかあります。

このチュートリアルは網羅的な内容を目指しているわけではありませんし、 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. Unicode 文字列
    - 3.1.4. リスト
  - 3.2. プログラミングへの第一歩
- 4. その他の制御フローツール
  - 4.1. `if` 文
  - 4.2. `for` 文
  - 4.3. `range()` 関数
  - 4.4. `break` 文と `continue` 文とループの `else` 節
  - 4.5. `pass` 文
  - 4.6. 関数を定義する
  - 4.7. 関数定義についてもう少し
    - 4.7.1. デフォルトの引数値
    - 4.7.2. キーワード引数
    - 4.7.3. 任意引数リスト
    - 4.7.4. 引数リストのアンパック
    - 4.7.5. ラムダ式
    - 4.7.6. ドキュメンテーション文字列
  - 4.8. 間奏曲: コーディングスタイル
- 5. データ構造
  - 5.1. リスト型についてもう少し
    - 5.1.1. リストをスタックとして使う
    - 5.1.2. リストをキューとして使う
    - 5.1.3. 関数型プログラミング用ツール
    - 5.1.4. リストの内包表記
      - 5.1.4.1. ネストしたリストの内包表記
  - 5.2. `del` 文
  - 5.3. タプルとシーケンス
  - 5.4. 集合型
  - 5.5. 辞書
  - 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. パッケージ内参照
    - 6.4.3. 複数ディレクトリ中のパッケージ
- 7. 入力と出力
  - 7.1. ファンシーな出力の書式化
    - 7.1.1. 古い文字列フォーマット方法
  - 7.2. ファイルを読み書きする
    - 7.2.1. ファイルオブジェクトのメソッド
    - 7.2.2. `json` による構造化されたデータの保存
- 8. エラーと例外
  - 8.1. 構文エラー
  - 8.2. 例外
  - 8.3. 例外を処理する
  - 8.4. 例外を送出する
  - 8.5. ユーザー定義例外
  - 8.6. クリーンアップ動作を定義する
  - 8.7. 定義済みクリーンアップ処理
- 9. クラス
  - 9.1. 名前とオブジェクトについて
  - 9.2. Python のスコープと名前空間
  - 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. 例外はクラスであってもよい
  - 9.9. イテレータ (iterator)
  - 9.10. ジェネレータ (generator)
  - 9.11. ジェネレータ式
- 10. 標準ライブラリミニツアー
  - 10.1. OSへのインタフェース
  - 10.2. ファイルのワイルドカード表記
  - 10.3. コマンドライン引数
  - 10.4. エラー出力のリダイレクトとプログラムの終了
  - 10.5. 文字列のパターンマッチング
  - 10.6. 数学
  - 10.7. インターネットへのアクセス
  - 10.8. 日付と時刻
  - 10.9. データ圧縮
  - 10.10. パフォーマンスの計測
  - 10.11. 品質管理
  - 10.12. バッテリー同梱
- 11. 標準ライブラリミニツアー --- その 2
  - 11.1. 出力のフォーマット
  - 11.2. 文字列テンプレート
  - 11.3. バイナリデータレコードの操作
  - 11.4. マルチスレッド
  - 11.5. ログ記録
  - 11.6. 弱参照
  - 11.7. リスト操作のためのツール
  - 11.8. 10 進浮動小数演算
- 12. さあ何を？
- 13. 対話入力編集とヒストリ置換
  - 13.1. 行編集
  - 13.2. ヒストリ置換
  - 13.3. キー割り当て
  - 13.4. インタラクティブインタプタの代替
- 14. 浮動小数点演算、その問題と制限
  - 14.1. 表現エラー
- 15. 付録
  - 15.1. 対話モード
    - 15.1.1. エラー処理
    - 15.1.2. 実行可能な Python スクリプト
    - 15.1.3. 対話モード用の起動時実行ファイル
    - 15.1.4. カスタマイズ用モジュール