タグ

ブックマーク / morchin.sakura.ne.jp (3)

  • Effective Python - スコープと名前空間

    1   データの保存場所 Pythonでは、データを保存できる場所は以下の3通りである。 変数 属性 アイテム 順に見ていくと、変数は通常の a = 1 の a で、属性は a.x = 1 の x で、アイテムは、a[0] である。 変数、属性は生でアクセス可能だが、アイテムに関してはメソッドや演算子を通してしかアクセスできない。 変数は、関数、モジュールが持つことができる。 属性は、関数、クラス、モジュールが持つことができる。 アイテムは、ビルトインの辞書やリストやセットなどが持つことができる。 また、上記3通りのメモリ上に保存するという方法でなく、外部ファイルにデータを保存する(永続化する) ということも考えられるが、ここでは考えないことにする。 2   スコープと名前空間 変数のスコープは以下の4種類ある。 ローカルスコープ (L ocal scope) ネストスコープ (E ncl

  • Effective Python

    Programmer's Gate /Effective Python Effective Python Pythonの基を一通り勉強した人が次に読む記事を目指して書く予定。 Python 2.5を対象とする。

  • http://morchin.sakura.ne.jp/effective_python/functional.html

    Pythonでの関数型プログラミングの基は、ご存知の通りmap()、filter()、reduce()、lambdaである。 但し、map()、filter()はリスト内包表記で実現できる。 また、2007年から2008年にかけてリリース予定のPython 3.0では、 map()、filter()、lambdaはそのままで、reduce()はfunctoolsモジュールに移動される。 その他の機能の実現方法も見てみよう。 2   クロージャ クロージャ とは、"はてな"のキーワードによれば、 関数内に出現するフリー変数(関数内で宣言されていない変数)の解決の際、 実行時の環境ではなく、関数を定義した環境の変数を参照する機能である。 Pythonでクロージャを実現する方法を考えてみよう。 変数Nを静的に束縛する方法を考えてみる。 >>> def addN_factory(N): ...

  • 1