# Python チュートリアル

Python は強力で、学びやすいプログラミング言語です。効率的な高レベルデータ構造と、シンプルで効果的なオブジェクト指向プログラミング機構を備えています。 Python は、洗練された文法・動的なデータ型付け・インタープリタであることなどから、スクリプティングや高速アプリケーション開発(Rapid Application Development: RAD)に理想的なプログラミング言語となっています。

Python Web サイト(https://www.python.org) は、 Python インタープリタと標準ライブラリのソースコードと、主要プラットフォームごとにコンパイル済みのバイナリファイルを無料で配布しています。また、Python Web サイトには、無料のサードパーティモジュールやプログラム、ツール、ドキュメントなども紹介しています。

Python インタプリタは、簡単に C/C++ 言語などで実装された関数やデータ型を組み込み、拡張できます。また、アプリケーションのカスタマイズを行う、拡張言語としても適しています。

このチュートリアルは、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. 文字列型 (string)
    - 3.1.3. リスト型 (list)
  - 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.3.1. 位置またはキーワード引数
      - 4.7.3.2. 位置専用引数
      - 4.7.3.3. キーワード専用引数
      - 4.7.3.4. 関数の例
      - 4.7.3.5. 要約
    - 4.7.4. 任意引数リスト
    - 4.7.5. 引数リストのアンパック
    - 4.7.6. ラムダ式
    - 4.7.7. ドキュメンテーション文字列
    - 4.7.8. 関数のアノテーション
  - 4.8. 間奏曲: コーディングスタイル
- 5. データ構造
  - 5.1. リスト型についてもう少し
    - 5.1.1. リストをスタックとして使う
    - 5.1.2. リストをキューとして使う
    - 5.1.3. リストの内包表記
    - 5.1.4. ネストしたリストの内包表記
  - 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. パッケージ内参照
    - 6.4.3. 複数ディレクトリ中のパッケージ
- 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. 定義済みクリーンアップ処理
- 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. 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. 仮想環境とパッケージ
  - 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. カスタマイズ用モジュール