何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Effective Python

『Effective Python 第2版』の技術査読を担当しました

待望の第2版 2020年7月16日にオライリージャパンから『Effective Python, 2nd Edition』の邦訳である 『Effective Python 第2版』が発売される。 www.oreilly.co.jp この度、邦訳の査読者として参加させていただいた。 2020年3月~4月頃にかけて読んでいた。…

『Effective Python 2nd ed.』項目5:複雑な式の代わりにヘルパー関数を書く

不変でも進化する 『Effective Python 2nd ed.』の続き effectivepython.com 項目5は初版の項目4の続投であり、主張もそのままである。 Python特有の主張ではなく、どの言語でも大事にするべき項目である。 それでは何も変わっていないのか、というと、実は2…

『Effective Python 2nd ed.』項目4:C言語形式の書式化やstr.formatではなくフォーマット済み文字列を使おう

フォーマット済み文字列は単なる糖衣構文、そう思っていた時期が僕にもありました。

『Effective Python 2nd ed.』項目3:bytesとstrの違いを知ろう

実質的に初版のItem 3の続投であるが、初版はPython 2の文字列である`str`と`unicode`、Python 3の`bytes`と`str`の違いを含めて説明があったが、 2版ではPython 3向けの説明に特化して更新された。 単純にPython 2向けの説明を削ったのではなく、システムの…

『Effective Python 2nd ed.』項目2:PEP 8スタイルガイドに従おう

言語に依存しない原則 『Effective Python 2nd ed.』の続き effectivepython.com これも初版からの続投であるが、コーディングスタイルを揃えるという話題はPythonに限らずどの言語でも重要なことである。 Pythonの場合、PEP 8という形で広く使われているコ…

『Effective Python 2nd ed.』項目1:使っているPythonのバージョンを知ろう。

11月まで楽しみに待っていよう...と思っていたが、O'Reilly Learningから電子版が読めることが分かった(!)ので、少しずつ読み進めてみよう。

Python 3.6 リリースパーティに参加しました

マイクを持って話す。これぞ文明の機器。 去る2017年1月31日にヤフージャパンにて「Python 3.6 リリースパーティ」が行われた。 pystudy.connpass.com 当初は一般参加のつもりであった。 石本さんのPython 3.6に関する一連のエントリを読んでクラス生成に関…

Python 3.6における『Effective Python』 項目35はこう変わる

項目35は言語に取り込まれた Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある、というのは前回の流れと同じ。 項目35「クラス属性をメタクラスで注釈する」はクラス定義後にプロパティを修正したり注釈を加える…

Python 3.6における『Effective Python』 項目34はこう変わる

項目34はかなりシンプルになる Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある、というのは前回の流れと同じ。 xaro.hatenablog.jp クラスが定義された際に自動で何らかの辞書に登録したいという場面でメタクラ…

Python 3.6における『Effective Python』 項目33はこう変わる

項目33「サブクラスをメタクラスで検証する」はこう書き換わる Python 3.6がリリースされた。 Python 3.6で導入された新機能の一つに__init_subclass__がある。 PEP 487 -- Simpler customisation of class creation | Python.org か石本さんのエントリを参…

『Effective Python 読書会 #3』を開催しました

単調減少の恐怖 去る2016年5月28日に品川区立五反田文化センターにて『Effective Python 読書会 #3』を開催しました。 前回同様(会議室のキャパシティである)18人規模で開催し、10名の参加者でした。 発表者枠の無断キャンセルはさすがにつらい…。 項目25…

『Effective Python 読書会 #2』を開催しました

2回目でした。 去る2016年4月23日に五反田にて『Effective Python 読書会 #2』を開催しました。 前回は一応30人規模でしたが、今回は18人規模で開催し、12名の参加者でした。 読書会ならばこの程度の規模がよさそうです。 よかったこと 無事開催できた 今回…

『Effective Python 読書会 #1』を開催しました

1週間以上前の出来事ですが… 去る2016年3月19日に代々木にて『Effective Python 読書会 #1』を開催しました。 きっかけは『Effective Python』邦訳版の「訳者あとがき」です。 この本の読み方としては読書会などもいいのではないかと感じました。 お互いに新…

『Effective Python』Item 36 訳注の補遺(のつもり)

過去にこのようなエントリを書いた。 掲載されている下記のコードがWindowsでは動かない、という内容であった。 def run_openssl(data): env = os.environ.copy() env['password'] = b'\xe24U\n\xd0Ql3S\x11' proc = subprocess.Popen( ['openssl', 'enc', '…

『Effective Python』の査読を担当しました

2016年1月23日にオライリージャパンから『Effective Python』の邦訳版が発売された。 この度、邦訳の査読者として参加させていただいた。 驚くべきことに査読者紹介として略歴まで掲載されている。 『Effective Python』の邦訳を世に出すべきだと思い淡々と…

『Effective Python』Item 37: スレッドはブロッキングI/Oに使い、並列処理は避けよう

『Effective Python』の続き。不遇のWindows。 Effective Python › The Bookwww.effectivepython.com 人によってはGlobal Interpreter Lock(GIL) と聞くと嫌な思い出が蘇ることがあるのだろうか。 私は恥ずかしながら並列・並行プログラミング未経験というア…

『Effective Python』Item 36: 子プロセスを制御するためにsubprocessを使おう

『Effective Python』の続き。想像以上につらい。 Effective Python › The Bookwww.effectivepython.com Item 36から「Concurrency and Parallelism(並行と並列)」と題してPythonによる並行・並列プログラミングのコツを解説…となるのはよいが2つ問題があ…

『Effective Python』Item 35: メタクラスを使ってクラス属性に注釈をつけよう

『Effective Python』の続き。メタクラスとディスクリプタの華麗なる関係。 Effective Python › The Bookwww.effectivepython.com メタクラスの応用例、そしてChapter 4の最後を飾るのはクラス属性の注釈、またはメタクラスとディスクリプタの合わせ技の話で…

『Effective Python』Item 34: メタクラスを使ってクラスの存在を登録をしよう

『Effective Python』の続き。末端の人間頑張れメソッドダメ、ゼッタイ。 Effective Python › The Bookwww.effectivepython.com メタクラスの活用第二弾として、クラスの登録を挙げている。 PythonのオブジェクトをJSON文字列へシリアライズ、JSON文字列から…

『Effective Python』Item 33: メタクラスを使ってサブクラスの検証をしよう

『Effective Python』の続き。水際で防げ。 Effective Python › The Bookwww.effectivepython.com 『Effective Python』のChapter 4冒頭に筆者は次のように述べている。 Metaclass are often mentioned in lists of Python's features, but few understand w…

『Effective Python』Item 32: 属性の遅延評価には__getattr__, __getattribute__,__setattr__を使おう

『Effective Python』の続き。ナマケモノでいこう。 Effective Python › The Bookwww.effectivepython.com 遅延評価を__getattr__やgetattribute__、__setattr__で実現できますよ、という話。 __getattr__らは一般に、クラスの属性アクセスを制御するための…

『Effective Python』Item 31: 再利用可能な@propertyメソッドにはディスクリプタを使おう

『Effective Python』の続き。@propertyの限界を超えろ。 Effective Python › The Bookwww.effectivepython.com @propertyデコレータの欠点として再利用ができないというのがある。 テストの成績を管理するクラスを例に説明している。 class Exam(object): d…

『Effective Python』Item 30: 属性をリファクタリングする代わりに@propertyを検討しよう

『Effective Python』の続き。@property大好き一番好きなデコレータです! Effective Python › The Bookwww.effectivepython.com @propertyを使えばクラス全体をリファクタリングすることなく属性のリファクタリングができますよ、という話。 リーキーバケッ…

『Effective Python』Item 29: ゲッターやセッターの代わりに通常の属性を使おう

『Effective Python』の続き。ゲッターやセッターをPythonで実装しちゃうのは素人。 Effective Python › The Bookwww.effectivepython.com 今回からChapter 4「メタクラスと属性」に突入。 タイトルの順序はメタクラスが先であるが、しばらくは属性の話が続…

『Effective Python』Item 28: カスタムコンテナ型はcollections.abcから継承しよう

『Effective Python』の続き。足りないものを補うために。 Effective Python › The Bookwww.effectivepython.com 自作のコンテナを作る際にはlistとかから直接継承するのではなく、collections.abcから継承して作りましょうという話である。 次の二分木にリ…

『Effective Python』Item 27: プライベート属性よりもパブリック属性を使おう

『Effective Python』の続き。Pythonにプライベートなどない。 Effective Python › The Bookwww.effectivepython.com 「Pythonには、パブリックとプライベートという2つのクラス属性があります。(超訳)」からこのItemは始まるが、基本的にはパブリックを使い…

『Effective Python』Item 26: 多重継承はMix-inユーティリティクラスでのみ使おう

『Effective Python』の続き。多重継承は日の目を見るか。 Effective Python › The Bookwww.effectivepython.com 多重継承は一般的に避けましょうとしつつ、どうしても使いたい場合はMix-inを検討しましょうという話である。 Mix-inというとRubyが思い浮かぶ…

『Effective Python』Item 25: 親クラスの初期化にはsuperを使おう

『Effective Python』の続き。親の顔を見てみたい。 Effective Python › The Bookwww.effectivepython.com 子クラスのインスタンスから親クラスの初期化をしたい場合はsuper使え、というタイトルオンリーな話。 クラス階層のメソッドの検索順序はMethod Reso…

『Effective Python』Item 24: ジェネリックなオブジェクト構築には@classmethodポリモーフィズムを使おう

『Effective Python』の続き。__init__のポリモーフィズム? Effective Python › The Bookwww.effectivepython.com Googleに勤務する筆者らしく、MapReduceの構築を例にジェネリックなオブジェクト構築を説明している。 ハードディスク上の巨大なファイルの…

『Effective Python』Item 23: 単純なインタフェースではクラスの代わりに関数を受けよう

『Effective Python』の続き。Callableなクラスも。 Effective Python › The Bookwww.effectivepython.com listのsortメソッドやcollections.defaultdictのdefault_factoryに渡すような函数についての話。 他の言語だとフックを実現するには抽象クラスを定義…