Schwartzian transformとか勉強。 Schwartzian transform - Wikipedia, the free encyclopedia ようするに >>> def compute(x): "very slow function" print "compute", x return -x という重い処理をした結果についてソートする場合に、 compare(略してcmp)の中でその処理を実行するとなんどもcomputeしてしまってもったいない、 >>> xs = range(5) >>> xs.sort(lambda x,y: cmp(compute(x), compute(y))) compute 1 compute 0 compute 2 compute 1 compute 3 compute 2 compute 4 compute 3 >>> xs [4,
1 データの保存場所 Pythonでは、データを保存できる場所は以下の3通りである。 変数 属性 アイテム 順に見ていくと、変数は通常の a = 1 の a で、属性は a.x = 1 の x で、アイテムは、a[0] である。 変数、属性は生でアクセス可能だが、アイテムに関してはメソッドや演算子を通してしかアクセスできない。 変数は、関数、モジュールが持つことができる。 属性は、関数、クラス、モジュールが持つことができる。 アイテムは、ビルトインの辞書やリストやセットなどが持つことができる。 また、上記3通りのメモリ上に保存するという方法でなく、外部ファイルにデータを保存する(永続化する) ということも考えられるが、ここでは考えないことにする。 2 スコープと名前空間 変数のスコープは以下の4種類ある。 ローカルスコープ (L ocal scope) ネストスコープ (E ncl
通常の属性参照 x.nameでxの属性nameを参照した場合、以下の手順で検索される。 xがインスタンスオブジェクトの場合 'name'がx.__dict__のキーである場合、x.nameはx.__dict__['name']の値を返す。 それ以外の場合、x.nameは検索をxのクラスに委譲する(つまり、x.__class__.nameと同じように機能する)。 xがクラスオブジェクトの場合 'name'がx.__dict__のキーである場合、x.nameはx.__dict__['name']の値を返す。 それ以外の場合、x.nameは検索をCの基底クラスに委譲する(つまり、x.__bases__をループにかけ、それぞれごとにnameを検索する) 以上で見つからなかった場合 特殊メソッド__getattr__が定義もしくは継承されている場合、x.__getattr__['name']が呼び出
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く