python-history-jp.blogspot.com
The History of Python.jp: メソッド解決順序(MRO)
http://python-history-jp.blogspot.com/2010/08/mro.html
The History of Python.jp. 多重継承が利用可能な言語では、メソッドを探索するときのベースクラスを探索する順序を、メソッド解決順序(MRO)と呼んでいる。Pythonではメソッドだけではなく、属性の探索でもこれが利用される。単一継承しかサポートしていない言語では、MROはとてもつまらない話題であるが、多重継承の場合には必要となってきて、MROアルゴリズムの選択が極めて難しい問題となりうる。Pythonでは、クラシック、Python 2.2の新スタイル、Python 2.3の新スタイル(C3とも呼ばれる)の3種類のMROアルゴリズムを持っていることが知られている。Python 3では、最後のアルゴリズムだけが生き残っている。 旧スタイルクラスはシンプルなMROの方式を利用していた。メソッドを探す場合には、シンプルに深さ優先探索を行って、ベースクラスの中で最初にマッチしたオブジェクトが返される。例えば、次のようなクラス構造について見てみよう。 など)、いくつかのメソッドをobjectクラスが持っているため、このメソッドの解決順序の重要性は以前よりも高くなった...Python 2...
python-history-jp.blogspot.com
The History of Python.jp: なぜPythonの割り算はC言語と違う方式なのか?
http://python-history-jp.blogspot.com/2010/09/pythonc.html
The History of Python.jp. 今日は何度も「なぜPythonの整数の割り算はC言語のようにゼロに向けて丸めるのではなく、切り捨てなのか?」と聞かれた。 しかし、どちらかの数値が負の場合、結果は切り捨てられる。言い換えると、ゼロから遠い方向(負の無限大方向)に向けて丸められる。 5/ 2 -3 5/ -2 -3. この挙動は何人かの人を混乱させたようであるが、このような実装になっているのは数学的な根拠がある。整数の割り算の演算子(/ )と、その弟の余りを計算する演算子(%)は、次のような数学的な関係を保っている。すべての変数は整数とする。 A/b = q あまり r. B * q r = a かつ 0 = r b (ただし、a, bはともに0以上の整数). もしも、この式の関係性を、負の数値まで拡張したいのであれば、2つの選択肢があります。もし商をゼロに向けて丸めるのであれば、付帯条件を. と変更する必要がある。それ以外には、qを負の無限大の方に向けて丸める方法がある。この場合、付帯条件は. 演算子は、演算する数が両方整数か、一つ以上浮動小数点数が含まれて...と快諾していただいた,...
python-history-jp.blogspot.com
The History of Python.jp: 7月 2010
http://python-history-jp.blogspot.com/2010_07_01_archive.html
The History of Python.jp. 原文: http:/ python-history.blogspot.com/2010/06/import-antigravity.html. 原文投稿者:Guido van Rossum. を参照するというantigravityモジュールが、Skip MontanaroによってPython 3に追加された。私が知る限り最初にこのモジュールについて焦点をあてたブログはこれである: http:/ sciyoshi.com/blog/2008/dec/30/import-antigravity/. しかし、このモジュールの本当の起源はGoogle App Engineである。私たち(訳注: GuidoはGoogleで働いている)がApp Engineを公開した、2008年4月7日の直前だった。公開の数週間前の、ほとんどのコードがコードフリーズしたときに、GoogleのApp Engineチームは何かイースターエッグを忍び込ませたいと考えた。時には複雑で...Import thisとThe Zen of Python(2). IPC 10, PyCon.
python-history-jp.blogspot.com
The History of Python.jp: 6月 2010
http://python-history-jp.blogspot.com/2010_06_01_archive.html
The History of Python.jp. 原文: http:/ python-history.blogspot.com/2010/06/new-style-classes.html. 原文投稿者:Guido van Rossum. 以前、Pythonへのクラスの追加は、本質的には後付であったという説明を行った。実装の選択は、Pythonの「手抜きをする」という哲学に従って行われた。しかし、Pythonが進歩するに従い、エキスパートのPythonユーザは、クラスの実装の問題について頻繁に不満を述べるようになってきた。 他の問題は、型システムが全般的に、ユーザ定義クラスに関しては「間違っている」ようにしか見えなかったことである。例えば、まったく別の関係ないクラスのユーザ定義の2つのオブジェクトの. を評価すると、真になってしまうのである。言うまでもなく、C やJavaなどの、クラスが言語の型システムと密接に結びついているような他の言語に明るい開発者から見ると、かなりおかしく見えた。 クラスの書き直しに関しての面白い点は、旧スタイルクラスと置き換えて導入したのではなく、新...新スタイルクラスへの変...
python-history-jp.blogspot.com
The History of Python.jp: Pythonの設計哲学
http://python-history-jp.blogspot.com/2009/04/python.html
The History of Python.jp. 原文: http:/ python-history.blogspot.com/2009/01/pythons-design-philosophy.html. 原文投稿者: Guido van Rossum. 今後のブログのエントリーは、生々しいPythonの歴史の詳細に入り込んでいく予定である。しかし、それに触れる前に、私がPythonの設計や実装をしている時に、意志決定を助けてくれた哲学的なガイドラインについて詳しく説明をしていきたいと思う。 まず最初に、Pythonはもともと"スカンク・ワークス(社内の秘密裏のプロジェクトの意味)"として計画がスタートした。公式な予算などなかったし、私は素早く結果を出そうとしていた。マネジメントにプロジェクトのサポートを説得する、というのがその理由の一つである(そして、その目論見は達成できた)。このような状況から、時間を節約するためのルールがいくつか導き出された。 12300;物事は可能な限り単純化されるべきである。ただし、それ以上単純にしてはいけない」(アインシュタイン). 最終的に、私は良いプログ...
python-history-jp.blogspot.com
The History of Python.jp: import thisとThe Zen of Python(2)
http://python-history-jp.blogspot.com/2010/07/import-thisthe-zen-of-python2.html
The History of Python.jp. Import thisとThe Zen of Python(2). 原文: http:/ www.wefearchange.org/2010/06/import-this-and-zen-of-python.html. 注:本エントリーは、Guidoのブログではなく、そこで紹介されていた、Barry Warsaw氏のブログの翻訳です。翻訳と公開の許可をしてくださったBarry Warsaw氏に感謝します. は現在(元記事執筆時点)、 PyCon Australia. でする話の準備をしている。彼はその準備の中で、私に" Zen of Python. というメーリングリストに投稿された時のメールを見つけることができた。"The Python Way"というタイトルで、 1999年の7月4日. すぐに最初の出典を見つけることができなかったので、自分のアーカイブの探査に戻ったり、" this. は International Python Conference #10. IPC 10, PyCon. 私たちは500ほどのエントリーを受けつけたが、...
python-history-jp.blogspot.com
The History of Python.jp: import antigravity
http://python-history-jp.blogspot.com/2010/07/import-antigravity.html
The History of Python.jp. 原文: http:/ python-history.blogspot.com/2010/06/import-antigravity.html. 原文投稿者:Guido van Rossum. を参照するというantigravityモジュールが、Skip MontanaroによってPython 3に追加された。私が知る限り最初にこのモジュールについて焦点をあてたブログはこれである: http:/ sciyoshi.com/blog/2008/dec/30/import-antigravity/. しかし、このモジュールの本当の起源はGoogle App Engineである。私たち(訳注: GuidoはGoogleで働いている)がApp Engineを公開した、2008年4月7日の直前だった。公開の数週間前の、ほとんどのコードがコードフリーズしたときに、GoogleのApp Engineチームは何かイースターエッグを忍び込ませたいと考えた。時には複雑で...The History of Python.
python-history-jp.blogspot.com
The History of Python.jp: リスト内包表記〜ジェネレータ式
http://python-history-jp.blogspot.com/2010/09/blog-post.html
The History of Python.jp. リスト内包表記はPython 2.0で追加された。この機能はGreg Ewingによるパッチを元にして、Skip MontanaroとThomas Woutersらの貢献もあって実現された。私の記憶が正しければ、Tim Petersもこのアイディアをしっかりと保証してくれた。基本的には、リスト内包表記は数学者によって使用されてきた、よく知られた表記法をPythonicに解釈して実現したものである。 これは、一般に、10より大きな数の集合と解釈される。数学の世界では、この形式は、例えば全ての実数、全ての整数などを表す普遍集合(universal set)であると、読み手は解釈する。Pythonの2.0には普遍集合の概念はなく、setもなかった。setについてもおもしろい話があるため、将来ブログに投稿することになるだろう。 F(x) for x in S if P(x)]. F(x) for x in S]. X for x in S if P(x)]. X 1 for x in S]. Map(lambda x: x 1, S). という表記と比べると&...
python-history-jp.blogspot.com
The History of Python.jp: 9月 2010
http://python-history-jp.blogspot.com/2010_09_01_archive.html
The History of Python.jp. 今日は何度も「なぜPythonの整数の割り算はC言語のようにゼロに向けて丸めるのではなく、切り捨てなのか?」と聞かれた。 しかし、どちらかの数値が負の場合、結果は切り捨てられる。言い換えると、ゼロから遠い方向(負の無限大方向)に向けて丸められる。 5/ 2 -3 5/ -2 -3. この挙動は何人かの人を混乱させたようであるが、このような実装になっているのは数学的な根拠がある。整数の割り算の演算子(/ )と、その弟の余りを計算する演算子(%)は、次のような数学的な関係を保っている。すべての変数は整数とする。 A/b = q あまり r. B * q r = a かつ 0 = r b (ただし、a, bはともに0以上の整数). もしも、この式の関係性を、負の数値まで拡張したいのであれば、2つの選択肢があります。もし商をゼロに向けて丸めるのであれば、付帯条件を. と変更する必要がある。それ以外には、qを負の無限大の方に向けて丸める方法がある。この場合、付帯条件は. 演算子は、演算する数が両方整数か、一つ以上浮動小数点数が含まれて...リスト内包表記はPyt...