Python のcollections
モジュール ( http://hg.python.org/cpython/file/2.7/Lib/collections.py#l234 ) のソースを読んでいるときに、namedtuple
関数が文字列テンプレートからクラスの定義を作成することがわかりました。で実行されexec
ます。デコレータを書くときのように、関数内でクラスを定義するだけでそれが行われないのはなぜですか? より読みやすく、より信頼性の高いソリューションになると思いますよね?Python のコア開発者は自分が何をしているかを知っているはずですが、ここで何が欠けているのでしょうか?
1 に答える
1
Raymond Hettinger は、元の ActiveState レシピでこれについて簡単に言及しています。
キーワード引数チェックの欠陥を指摘してくれた Peter Kovac に感謝します。彼のコメントのおかげで、レシピは現在の exec スタイルに進化し、Python の高速組み込み引数チェックをすべて無料で利用できるようになりました。テンプレートを作成して実行する新しいスタイルにより、関数
__new__
と__repr__
関数の両方が、このレシピの以前のバージョンよりも高速でクリーンになりました。
于 2014-03-12T07:28:19.367 に答える