パーフェクトPython

正誤表
位置 刷(誤) 刷(正)
p.21 Guido van Rossam 氏は、 Guido van Rossum 氏は、 1 -
p.22 ネットワークプログラミン ネットワークプログラミング 1 -
p.29 Guido van Rossam 氏が Guido van Rossum 氏が 1 -
p.39 com というディレクトリだけが見えあることでしょう com というディレクトリだけが見えることでしょう 1 -
p.40 祖結合の 疎結合の 1 -
p.43 少数部を持つ値を 小数部を持つ値を 1 -
p.45 Guido van Rossam は Guido van Rossum 氏は 1 -
p.46 1-5-1 メジャープロットフォームへのインストール 1-5-1 メジャープラットフォームへのインストール 1 -
p.46 Widnows Windows 1 -
p.47 object oct oepn ord object oct open ord 1 -
p.49 捜査中 操作中 1 -
p.51 PHPなどと共にに PHPなどと共に 1 -
p.65 かなり大きいな値が かなり大きな値が 1 -
p.68 # 少数点を含む実数 # 小数点を含む実数 1 -
p.70 >>> math.py (消去) 3 -
p.71 rect(x) rect(r, phi) 1 -
p.72 実装として扱えない 実数として扱えない 1 -
p.75 coding[:=]s*([-w.]+) coding[:=]\s*([-\w.]+) 1 -
p.76 複合化しようとすると、 復号化しようとすると、 1 -
p.81 >>> x[2:-1] [3.0, 'a', 'b', 'c'] >>> x[2:-1] [3.0, 'a', 'b'] 2 -
p.87 discartdメソッドを使えば discardメソッドを使えば 1 -
p.90 シンメトリックディッファレンス シンメトリックディファレンス 1 -
p.91 disjointメソッドを isdisjointメソッドを 1 -
p.97 空のシーケンス([]や()や[]) 空のシーケンス(""や()や[]) 1 -
p.97 __nonezero__ メソッドが __bool__ メソッドが 1 -
p.98 条件分 条件文 1 -
p.101 >>> 0 < 1 < 2 < 3 True >>> x = 2 >>> 0 < x < 3 True >>> x = 4 >>> 0 < x < 3 False 1 -
p.102 文字列も度同様に同じ文字列 文字列も同様に同じ文字列 1 -
p.109 替わりに 代わりに 1 -
p.110 try のブロックに既述し、 try のブロックに記述し、 1 -
p.121 kwargs = {'arg3': 3, 'arg4': 4} kwargs = {'arg4': 4, 'arg5': 5} 1 -
p.122 関数append_number()の戻り値を見ると、 上の例で、関数append_number()の戻り値は、 1 -
p.123 def spam(*args, defaultarg="省略時の値"): ... def spam(*args, default_arg="省略時の値"): ... 1 -
p.126 この例のように リスト5.4のように 1 -
p.129 >>> for value in generator: >>> for value in generator(): 1 -
p.131 def pick_odd(seq): return filter(lambda item: item % 2 == 0, seq) def pick_odd(seq): return filter(lambda item: item % 2 == 1, seq) 1 -
p.131 item %2 == 1 item % 2 == 1 1 -
p.137 新しいインスタンスが帰ってきます 新しいインスタンスが返ってきます 1 -
p.140 # Base.spam() をオーバーロード # Base.spam() をオーバーライド 1 -
p.146 演算子に対応するメソッド 演算子の左項に対応するメソッド 1 -
p.147 累積代入分 累積代入文 1 -
p.153 delete spam.ham del spam.ham 1 -
p.153 self.__ham == value self.__ham = value 1 -
p.154 class Spam:: class Spam: 1 -
p.158 isinstance(Spam, Food)やisinstance(Ham()), Food)の結果は isinstance(Spam(), Food)やisinstance(Ham(), Food)の結果は 1 -
p.158 Spam`` と Spam と 1 -
p.158 abstructmethod()デコレータ abstructmethodデコレータ 1 -
p.161 メンバのみが 全てのメンバが 1 -
p.161 ディレクトリ名を「:」を区切り ディレクトリ名を「:」で区切り 1 -
p.162 例えば、 python/usr/bin/spam.py として Python を起動した場合 例えば、 python /usr/bin/spam.py として Python を起動した場合 1 -
p.163 指定されたものします。 指定されたものとします。 1 -
p.164 ... |--subpackage_spam |-- subpackage_ham.py |-- subpackage_egg.py ... |--subpackage_spam |-- __init__.py |-- subpackage_ham.py |-- subpackage_egg.py 1 -
p.164 ディレクトリでですが、 ディレクトリですが、 1 -
p.165 from . iport egg from . import egg 1 -
p.166 sys.path.add('package_dir/project1') sys.path.add('package_dir/project2') sys.path.append('package_dir/project1') sys.path.append('package_dir/project2') 1 -
p.167 del math.f del math.spam 1 -
p.168 圧縮してspam.zipファイルを作成して 圧縮したspam.zipファイルを作成して 1 -
p.169 >>>> dumb_print.print("Spam!") >>> dumb_print.print("Spam!") 1 -
p.174 開放 解放 1 -
p.175 開放 解放 1 -
p.184 def get_filename(self, filename): def get_filename(self, fullname): 1 -
p.192 通常の例外規定クラス 通常の例外基底クラス 1 -
p.194 インタプリタ起動時の Warnig 設定オプション インタプリタ起動時の Warning 設定オプション 1 -
p.197 複数の iterable を受け取って、 各 iterable の同じ順序のオブジェクトを タプルにつめて返します。 複数の iterable を受け取って、 各 iterable の同じ順序のオブジェクトを タプルにつめて yield で返します。 1 -
p.206 >>> b = b'あ' >>> b = b'\xe3\x81\x82' 1 -
p.207 if line.indexof(search) > -1: if line.find(search) > -1: 1 -
p.207 >>> b = b'あ' >>> s = str(b) >>> print(s) b'あ' >>> b = b'\xe3\x81\x82' >>> s = str(b) >>> print(s) b'\xe3\x81\x82' 1 -
p.212 -encodin オプションも追加しています。 -e (--encoding) オプションも追加しています。 1 -
p.218 inport pickle import pickle 1 -
p.222 オプションをを含め、 オプションを含め、 1 -
p.227 acyncore モジュールの asyncore モジュールの 1 -
p.228 acyncore.dispatcher を継承します。 asyncore.dispatcher を継承します。 1 -
p.231 class EchoView: class EchoView(tkinter.Frame): 1 -
p.234 handler = EchoHandler(sock) handler = EchoHandler(sock, self) 1 -
p.234 http://gihyo.jp/book/2010/978-4-7741-5539-5/support http://gihyo.jp/book/2013/978-4-7741-5539-5/support 1 -
p.236 12-1 配布ための準備 12-1 配布のための準備 1 -
p.237 名前空間パッケージやパッケージ名をもとに決めるのがわかり安いでしょう 名前空間パッケージやパッケージ名をもとに決めるのがわかり易いでしょう 1 -
p.237 myproject-0.0.tar.gz ppjp.chat-0.0.0.tar.gz 1 -
p.238 from setuptools import setup, find_packages from setuptools import setup 1 -
p.238 tar tvf sdist/ppjp.chat-0.0.0.tar.gz tar tf dist/ppjp.chat-0.0.0.tar.gz 1 -
p.239 ppjp.chat ppjp.chat ================= 1 -
p.244 uploadサブコマンドのと同時に uploadサブコマンドと同時に 1 -
p.257 noseやpy.testなどの noseやpytestなどの 1 -
p.260 geeting関数 greeting関数 1 -
p.260 m = re.match(r'Basic\s+(?P<basic_auth>\w+)', auth) m = re.match(r'Basic\s+(?P<basic_auth>[a-zA-Z0-9+/=]+)', auth) 1 -
p.264 values = request.params.get_all('values') values = request.params.getall('value') 1 -
p.267 <% extends "base.html" %> <h1>{{ message }}</h1> {% extends "base.html" %} {% block body %} <h1>{{ message }}</h1> {% endblock %} 1 -
p.267 .body { body { 1 -
p.270 $ touch -p py3wiki/__init__.py $ touch -p py3wiki/__main__.py $ touch py3wiki/__init__.py $ touch py3wiki/__main__.py 1 -
p.271 from . import main main() from . import main if __name__ == '__main__': main() 1 -
p.273 engine = sa.create_engine('sqlite:///{dir}/wiki.db'.format(dir=os.getcwd())) import os ... engine = sa.create_engine('sqlite:///{dir}/wiki.db'.format(dir=os.getcwd())) 1 -
p.275 def page_view(request): page_name = request.urlvars['page_name'] edit_url = request.environ['webdispatch.urlgenerator'].generate('page_edit', page_name=page_name) try: page = DBSession.query(Page).filter(Page.page_name==page_name).one() tmpl = env.get_template('page.html') return tmpl.render(page=page, edit_url=edit_url) except NoResultFound: return HTTPFound(location=edit_url) @wsgify def page_view(request): page_name = request.urlvars['page_name'] page = DBSession.query(Page).filter(Page.page_name==page_name).one() tmpl = env.get_template('page.html') return tmpl.render(page=page) 1 -
p.276 def page_view(request): (略) tmpl = env.get_template('page.html') def page_edit_form(request): (略) tmpl = env.get_template('page_edit.html') 1 -
p.285 ... #配列の型の int ではなく float になる ... ... b array([[1. , 2. , 3. ], [1. , 2. , 3.3]]) ... #配列の型は int ではなく float になる ... ... c array([[1. , 2. , 3. ], [1. , 2. , 3.3]]) 1 -
p.288 ... numpy.sin(math.pi/2)) ... numpy.sin(math.pi/2) 1 -
p.290 if __name__ == '__main__': main(): if __name__ == '__main__': main() 1 -
p.293 quad(rgt1, 0, 10)の検算 quad(ret1, 0, 10)の検算 1 -
p.299 # 最初に作った配列と同じ範囲を 200 分割した配列を作成 # 最初に作った配列と同じ範囲を 180 分割した配列を作成 1 -
p.302 weave.inline(source, ['x', 'y']) weave.inline(code, ['x', 'y']) 1 -
p.302 ...C++側で暗黙に定義されるPyObject* 型の変数ret_valueに値を設定します。 ...C++側で暗黙に定義されるPyObject* 型の変数return_valに値を設定します。 1 -
p.303 code = ''' ret_value = PyInt_FromLong(x + y); ''' ... ret = weave.inline(source,['x', 'y']) code = ''' return_val = PyInt_FromLong(x + y); ''' ... ret = weave.inline(code,['x', 'y']) 1 -
p.303 # 返値は ret_value 変数に代入する # 返値は return_val 変数に代入する 1 -
p.312 g = nx,Graph([(1, 2), (2, 3), (3, 4)]) g = nx.Graph([(1, 2), (2, 3), (3, 4)]) 1 -
p.313 edgeを追加する場合は、同様にGraphクラスのメソッドであるadd_edgeかadd_edge_fromを使います。 edgeを追加する場合は、同様にGraphクラスのメソッドであるadd_edgeかadd_edges_fromを使います。 1 -
p.341 >>> for i in range(30): ... >>> import math >>> for i in range(30): ... 1 -
p.344 この館数の返値は... この関数の戻り値は... 1 -
p.351 Python らいしいシンプルなコードを記述できます。 Python らしいシンプルなコードを記述できます。 1 -
p.352 さらに HTTP ヘッダーにも HTTP ヘッダーにも文字コードが指定されていない さらに HTTP ヘッダーにも文字コードが指定されていない 1 -
p.353 files = {"attachment": ("myfile.xlsx", open("myfile.xlsx", "rw"))} files = {"attachment": ("myfile.xlsx", open("myfile.xlsx", "rb"))} 1 -
p.354 except ImortError: except ImportError: 1 -
p.357 リスト17.9のコードは、p要素でidにcopyrightが指定されている要素を検索します。 次のコードは、p要素でidにcopyrightが指定されている要素を検索します。 1 -
p.364 event_handler と違い stanza_handler は "subscibe" や "unsubscribe" のように event_handler と違い stanza_handler は "subscribe" や "unsubscribe" のように 1 -
p.368 参加命令を発効しています。 参加命令を発行しています。 1 -
p.371 あまり替わりませんので あまり変わりませんので 1 -
p.371 #(4)リストからの値の削除 client.lrem('mylist', 0, 'eggs') #(4)リストからの値の削除 client.lrem('mylist', 'eggs', num=0) 1 -
p.372 でmemcache.Redisオブジェクトを作成しています でredis.Redisオブジェクトを作成しています 1 -
p.377 from sqlalchmey import create_engine from sqlalchemy import create_engine 1 -
p.377 データベースのへの接続は データベースへの接続は 1 -
p.379 return "<MailAddress(%s, %s>" % (self.name, self.address) return "<MailAddress(%s, %s)>" % (self.name, self.address) 1 -
p.384 本稿執筆時点では Python3 系で 動作する Django はリリースされていませんし、 発売前の 2013-02-26 に Python3 対応の Django 1.5 が リリースされてしまいましたね (^ ^;; https://www.djangoproject.com/weblog/2013/feb/26/15/ https://docs.djangoproject.com/en/dev/releases/1.5/ 1 -
p.386 pikled_data1=pickle.dumps(data1) pickled_data1=pickle.dumps(data1) 1 -
p.389 $ pssh -h hosts.txt -o /tmp -o /tmp -A -- uname -a $ pssh -h hosts.txt -o /tmp -A -- uname -a 3 -
p.401 1つ目および 2つ目の記述例はとても冗長です。reStructredText を docutils 単体で使うのであればこれしかないのですが、sphinx 上であれば3つ目の list-table を用いるのが簡単です。 1つ目および 2つ目の記述例は、パディングをする必要があるなどとても冗長です。 ソース上の見た目がテーブルではなくなってしまいますが、記述するのであれば3つ目のlist-tableを用いるのが簡単です。 1 -
p.402 conf.py の設定がない。 conf.py に以下の設定が必要。 extensions = ['sphinx.ext.autodoc'] 1 -
p.404 .. autodoc:: sample :members: .. automodule:: sample :members: 1 -
p.404 .. autodoc:: sample :members: InModuleClass, ..., func_without_docstring .. automodule:: sample :members: InModuleClass, ..., func_without_docstring :undoc-members: 1 -
p.451 assertメソッド assert文 1 -
p.454 33 432 33, 432 1 -
p.457 クラスメソッ クラスメソッド 1 -
p.457 Web Server Gateway Interface (WSG) Web Server Gateway Interface (WSGI) 1 -
p.460 所謂エンたエンタープライズの 所謂エンタープライズの 1 -
書誌情報
著者Pythonサポーターズ
題名パーフェクトPython
出版技術評論社
ISBN9784774155395
発行2013年3月5日 初版