初めてのPython

[cover photo]
  • Mark Lutz, David Ascher 著、紀太 章 訳
  • 2000年09月 発行
  • 464ページ
  • ISBN4-87311-022-X
  • フォーマット
  • 原書: Learning Python

この商品は絶版になりました


この書籍は改訂されています。
改訂新版の紹介ページをご覧ください。

本書は、プログラミング言語Pythonの入門書です。Pythonは幅広く用いられているオブジェクト指向言語であって、スタンドアローンのプログラムや、さまざまな分野におけるスクリプト系のアプリケーションに利用されています。Pythonはフリーで、移植性に優れていて、強力で、きわめて使いやすい言語です。プログラミングの初心者であろうと、プロフェッショナルな開発者であろうと、読者を速やかにPython言語の核心に導くことが本書の目的です。

関連書籍

訳者まえがき
はじめに
本書の目的 
本書の形式 
前提条件 
最新情報 
本書の表記法 
本書で用いたプログラムについて 
意見と質問 
謝辞

・部 言語のコア部分 
1章 始めよう          
        1.1 Pythonを使う理由          
                1.1.1 Pythonの長所          
                1.1.2 仕事におけるPython       
                1.1.3 商用製品におけるPythonの利用 
                1.1.4 Pythonと類似ツールの比較   
        1.2 Pythonプログラムの実行方法     
                1.2.1 対話的コマンドライン         
                1.2.2 モジュールファイルの実行       
                1.2.3 Unixスタイルのスクリプトを実行する        
                1.2.4 埋め込みコードとオブジェクト     
                1.2.5 プラットフォームに固有のスタートアップモジュール 
                1.2.6 何をどこに入力するのか       
        1.3 モジュールファイルの概要        
                1.3.1 名前空間の検査の概要 
        1.4 Pythonの設定の詳細        
                1.4.1 環境変数 
                1.4.2 スタートアップファイルの例      
                1.4.3 GUIのテストのためのセッション   
                1.4.4 インストール作業のあらまし      
        1.5 まとめ          
        1.6 演習問題
        
2章 型と演算子 
        2.1 Pythonプログラムの構造 
        2.2 組み込み型を使う理由  
        2.3 数   
                2.3.1 標準数値型      
                2.3.2 組み込みのツールと拡張機能      
                2.3.3 Pythonにおける式の演算子    
                2.3.4 数値の実例      
        2.4 文字列 
                2.4.1 文字列の実例     
                2.4.2 型についての総称的な概念 
        2.5 リスト         
                2.5.1 リストの実例 
        2.6 ディクショナリ     
                2.6.1 ディクショナリの実例         
                2.6.2 ディクショナリの利用に関する注意 
        2.7 タプル 
                2.7.1 リストとタプルがある理由      
        2.8 ファイル 
                2.8.1 ファイル処理の実例          
                2.8.2 関連するPythonのツール     
        2.9 オブジェクトの一般的性質         
                2.9.1 再び型カテゴリについて        
                2.9.2 一般性       
                2.9.3 共有リファレンス   
                2.9.4 大小比較、等値性および真偽      
                2.9.5 Pythonにおける型の階層 
        2.10 組み込み型の落とし穴 
                2.10.1 代入はコピーではなくリファレンスを作成する 
                2.10.2 反復は構造を1レベル深くする    
                2.10.3 循環データ構造を表示することはできない       
                2.10.4 更新不能型は上書きで更新されることはない      
        2.11 まとめ        
        2.12 演習問題
        
3章 基本文 
        3.1 代入 
                3.1.1 変数名の規則    
        3.2 式 
        3.3 print文       
                3.3.1 Pythonによる「Hello World」プログラム        
        3.4 if文          
                3.4.1 一般形式       
                3.4.2 例          
                3.4.3 Pythonの構文規則        
                3.4.4 再び真偽テストについて
        3.5 whileループ     
                3.5.1 一般形式 
                3.5.2 例          
                3.5.3 break、continue、pass、そしてループのelse
        3.6 forループ      
                3.6.1 一般形式      
                3.6.2 例          
                3.6.3 rangeとカウンタによるループ 
        3.7 よくあるコーディングの落とし穴      
        3.8 まとめ 
        3.9 演習問題
        
4章 関数 
        4.1 関数を使う理由 
        4.2 関数の基礎 
                4.2.1 一般形式      
                4.2.2 定義と呼び出し   
                4.2.3 例:シーケンスの交わり 
        4.3 関数のスコープ規則 
                4.3.1 名前解決:LGB規則        
                4.3.2 例          
                4.3.3 global文 
        4.4     引数渡し 
                4.4.1 returnについての補足     
                4.4.2 特殊な引数対応付けモード      
        4.5     補足 
                4.5.1 ラムダ式      
                4.5.2 組み込み関数apply        
                4.5.3 組み込みのmap関数         
                4.5.4 Pythonにおける手続き 
                4.5.5 関数の設計方針 
                4.5.6 関数はオブジェクトである:間接呼び出し
        4.6     関数の落とし穴 
                4.6.1 ローカル名は静的に検出される 
                4.6.2 入れ子になった関数のスコープは入れ子にならない 
                4.6.3 デフォルトを用いることでリファレンスを保存する 
                4.6.4 デフォルト値と更新可能オブジェクト 
        4.7     まとめ      
        4.8     演習問題
        
5章 モジュール        
        5.1     モジュールを使う理由      
        5.2     モジュールの基礎         
                5.2.1 定義         
                5.2.2 利用方法       
        5.3     モジュールファイルは名前空間である        
                5.3.1 名前の修飾      
        5.4     インポートのモデル 
                5.4.1 importはただ一度だけ行なわれる         
                5.4.2 importおよびfromは代入である        
        5.5     モジュールの再ロード       
                5.5.1 一般形        
                5.5.2 例          
        5.6     補足       
                5.6.1 モジュールのコンパイルモデル     
                5.6.2 慣習としてのデータ隠蔽        
                5.6.3 混合モード:__name__と__main__    
                5.6.4 モジュールのサーチパスの変更     
                5.6.5 モジュールパッケージ(バージョン1.5以降)     
                5.6.6 モジュール設計の考え方       
                5.6.7 モジュールはオブジェクトである:メタプログラム 
        5.7     モジュールの落とし穴 
                5.7.1 名前の文字列を用いてモジュールをインポートする    
                5.7.2 fromは名前をコピーするがリンクはしない      
                5.7.3 トップレベルコードにおける文の順序の問題       
                5.7.4 「from」による再帰的なimportはうまく動作しないことがある          
                5.7.5 fromによるインポートはreloadによる影響を受けないことがある 
                5.7.6 再ロードは推移的には適用されない 
        5.8     まとめ      
        5.9     演習問題
        
6章 クラス 
        6.1     クラスを使う理由        
        6.2     クラスの基礎   
                6.2.1 複数のインスタンスオブジェクトがクラスから生成される         
                6.2.2 クラスは継承によって特殊化される   
                6.2.3 クラスはPythonの演算子を横取り可能である 
        6.3     class文の利用        
                6.3.1 一般形        
                6.3.2 例          
        6.4     クラスメソッドの利用      
                6.4.1 例          
        6.5     継承による名前空間木の検索    
                6.5.1 属性木の構築     
                6.5.2 継承されたメソッドの特殊化 
        6.6     クラスにおける演算子オーバロード        
                6.6.1 代表的な演算子オーバロード用メソッド 
                6.6.2 例          
        6.7     名前空間の規則:その全体像    
                6.7.1 修飾されていない名前:代入されない限りグローバル
                6.7.2 修飾された名前:オブジェクトの名前空間        
                6.7.3 名前空間のディクショナリ 
        6.8     クラスを用いた設計 
                6.8.1 PythonとOOP 
                6.8.2 OOPと継承:「is-a」      
                6.8.3 OOPと合成:「has-a」     
                6.8.4 OOPと代行    
                6.8.5 組み込みのオブジェクト型を拡張する          
                6.8.6 多重継承      
                6.8.7 クラスはオブジェクトである:汎用オブジェクトファクトリ 
                6.8.8 メソッドはオブジェクトである:結合あるいは非結合  
        6.9     補足 
                6.9.1 プライベート属性(バージョン1.5の新機能) 
                6.9.2 文書化文字列 
                6.9.3 クラス対モジュール 
        6.10    クラスの落とし穴
                6.10.1 クラスの属性を変更することで副作用が生じることがある
                6.10.2 多重継承:順番の問題
                6.10.3 クラス関数の属性は特別である
                6.10.4 メソッド、クラス、そして入れ子になったスコープ
        6.11    まとめ
        6.12    演習問題
        
7章 例外 
        7.1     例外を使う理由          
        7.2     例外の基礎    
                7.2.1 try/except/else    
                7.2.2 try/finally        
                7.2.3 raise     
                7.2.4 最初の例       
        7.3     例外の慣用句   
                7.3.1 例外は必ずしも悪い知らせとは限らない         235
                7.3.2 検索に成功したことをraiseによって通知することがある 
                7.3.3 外側のtry文によってコードのデバッグができる 
        7.4     例外のキャッチモード 
                7.4.1 try文の節 
                7.4.2 複数種類の例外のうち1つを捕捉する 
                7.4.3 実行時に入れ子になった例外 
                7.4.4 finally節は「後始末」を実行する 
        7.5     補足 
                7.5.1 追加データを渡す 
                7.5.2 assert文 
                7.5.3 クラス例外 
        7.6     例外の落とし穴 
                7.6.1 例外の適合は等値性によってではなく同一性に基づいて行なう 
                7.6.2 過度の捕捉     
                7.6.3 捕捉の不足     
        7.7     まとめ      
        7.8     演習問題

・部 言語の外部層 
8章 組み込みツール 
        8.1     閑話:sysモジュール      
        8.2     組み込み関数   
                8.2.1 型変換、数、そして比較        
                8.2.2 属性の操作      
                8.2.3 プログラムの実行   
        8.3     ライブラリモジュール       
                8.3.1 文字列の基本操作:stringモジュール       
                8.3.2 高度な文字列操作:reモジュール   
                8.3.3 オペレーティングシステムへの汎用のインタフェース:osモジュール   
                8.3.4 ファイルおよびディレクトリのコピー:shutilモジュール      
                8.3.5 インターネット関連のモジュール    
                8.3.6 バイナリデータの処理:structモジュール     
                8.3.7 デバッグ、計時処理、プロファイル処理         
        8.4     演習問題
        
9章 Pythonでよく行なわれる仕事      
        9.1     データ構造の操作         
                9.1.1 インラインでコピーを作成する     
                9.1.2 コピーを作成する:copyモジュール         
                9.1.3 整列とランダム化   
                9.1.4 ランダム化する:randomモジュール        
                9.1.5 新しいデータ構造を作成する      
                9.1.6   新しいリストとディクショナリの作成:UserListとUserDictモジュール         
        9.2     ファイルを操作する        
                9.2.1 ファイル内の各行に対して何か処理をする        
                9.2.2   コマンドラインで指定された一組のファイルに対して何らかの処理をする 
                9.2.3 1つ以上のファイルについて各行を処理する:fileinputモジュール 
                9.2.4 ファイル名とディレクトリ 
                9.2.5 一連のファイルと適合する:globモジュール 
                9.2.6 一時ファイルを利用する 
                9.2.7 テキストファイルの走査についての補足 
        9.3     プログラムを操作する 
                9.3.1 他のプログラムを呼び出す 
        9.4     インターネット関連の活動 
                9.4.1 プログラムによるWebページのダウンロード 
                9.4.2   リンクの有効性の確認とWebサイトのミラー処理:webcheker.pyとその仲間 
                9.4.3 メールのチェック 
        9.5     より大きい例 
                9.5.1 複利計算 
                9.5.2 自動ダイアルスクリプト 
                9.5.3 対話的Rolodex ? 
        9.6     演習問題
        
10章 フレームワークとアプリケーション
        10.1    自動苦情受け付けシステム 
        10.2    COMとのインタフェース:安価な宣伝活動 
        10.3    フォームデータを管理するためのTkinterを用いたGUIエディタ 
        10.4    設計上の考慮点 
        10.5    JPython:PythonとJavaの巧妙な融合 
                10.5.1 JPythonによってPythonプログラマがJavaライブラリにアクセスできる
                10.5.2 Javaのスクリプト言語としてのJPython 
                10.5.3 実際のJPython/Swingアプリケーション:grapher.py
        10.6    その他のフレームワークとアプリケーション 
                10.6.1 Python Imaging Library(PIL)       
                10.6.2 Numeric Python(NumPy)     
                10.6.3 SWIG      
                10.6.4 Python MegaWidgets(Pmw)   
                10.6.5 ILUとFnorb 
        10.7    演習問題
        
・部 付録
付録A Pythonのリソース
        A.1     Python言語のWebサイト          
        A.2     Pythonのソフトウェア    
                A.2.1 標準Pythonディストリビューション        
                A.2.2 Guidoからの贈り物       
                A.2.3 商用ベンダからの提供物        
                A.2.4 他のモジュールとパッケージ      
                A.2.5 Emacsのサポート         
        A.3     Pythonのドキュメントと書籍         
                A.3.1 Pythonの標準ドキュメントセット 
                A.3.2 FAQ 
                A.3.3 その他の出版されている書籍      
                A.3.4 その他のドキュメントの情報源     
        A.4     ニュースグループ、討論グループ、 および電子メールによるヘルプ
                A.4.1 comp.lang.python/python-list       
                A.4.2 comp.lang.python.announce/python-list-announce     
                A.4.3 python-help@python.org     
                A.4.4 SIG       
                A.4.5 JPython-interest 
        A.5     カンファレンス 
        A.6     サポート企業、コンサルタント、トレーニング 
        A.7     Tim Peters
        
付録B プラットフォーム依存の項目 
        B.1     Unix 
                B.1.1 Unixに固有の機能拡張 
        B.2     Windowsに固有の情報 
        B.3     Macintoshに固有の情報 
        B.4     Java 
        B.5     その他のプラットフォーム
        
付録C 演習問題の解答 
        C.1     1章      始めよう     
        C.2     2章      型と演算子 
        C.3     3章      基本文 
        C.4     4章      関数 
        C.5     5章      モジュール 
        C.6     6章      クラス 
        C.7     7章      例外 
        C.8     8章      組み込みツール 
        C.9     9章      Pythonでよく行なわれる仕事 
        C.10    10章     フレームワークとアプリケーション
コラム
        Pythonプログラムを起動する、その他の方法 
        注意点:スライスについて 
        注意点:ディクショナリのインタフェース 
        注意点:演算子オーバロード 
        その他のPythonの型 
        注意点:printとstdout 
        注意点:ファイル走査のループ 
        注意点:キーワード引数      
        注意点:lambda 
        注意点:モジュールの再ロード 
        注意点:出荷時のオプション 
        注意点:モジュールパッケージ 
        注意点:クラスと永続性 
        注意点:手抜きプログラム 
        ところで、Cmdクラスはどのように動作するのか          
        HTMLファイルからの引用   
        COMのインタフェースを調べる 
        Tkinterのドキュメント 
        Pythonソフトウェア協会(PSA)とPythonコンソーシアム 

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]