11

(lambda x:<code>)(<some input>)名前空間 (グローバル名前空間内または他の場所) のクリーンさを維持するために、Python で時折使用しています。ラムダ ソリューションの 1 つの問題は、含まれる可能性があるものに関して非常に限定的な構造であることです。

注: これは JavaScript プログラミングの習慣です。

これは名前空間を保持するための推奨される方法ですか? もしそうなら、自己実行機能を実装するより良い方法はありますか?

4

3 に答える 3

7

特定の関数 B でのみ呼び出される関数 A の場合、B で A を定義できます。これにより、名前空間が汚染されることはないと思います。例えば、

それ以外の :

def a_fn():
    //do something
def b_fn():
    //do something
def c_fn():
    b_fn()
    a_fn()

あなたはできる:

def c_fn():
    def a_fn():
        //do something
    def b_fn():
        //do something
    b_fn()
    a_fn()

それがpythonicな方法かどうかはわかりませんが、私は通常これが好きです。

于 2012-08-21T06:43:13.917 に答える
2

あなたはそれをしません。これは JavaScript では優れていますが、Python では軽量な構文も必要もありません。関数スコープが必要な場合は、関数を定義して呼び出します。しかし、多くの場合、必要ありません。コードをより理解しやすくするために、コードを複数の関数に分ける必要があるかもしれませんが、とにかくその名前が役に立ち、複数の場所で役立つ場合があります。

また、名前空間にさらに名前を追加することについて心配する必要はありません。JavaScript とは異なり、Python には適切な名前空間があるため、モジュール スコープで定義したヘルパーは、既定では (つまり、インポートされない限り) 他のファイルでは表示されません。

于 2012-08-21T06:42:22.000 に答える