関数内の静的変数に相当するPythonのものは何ですか? 質問する

関数内の静的変数に相当するPythonのものは何ですか? 質問する

この C/C++ コードに相当する Python 慣用表現は何ですか?

void foo()
{
    static int counter = 0;
    counter++;
    printf("counter is %d\n", counter);
}

具体的には、クラス レベルではなく関数レベルで静的メンバーを実装するにはどうすればよいでしょうか。また、関数をクラスに配置すると何かが変わりますか。

ベストアンサー1

少し逆ですが、これで動作するはずです:

def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter
foo.counter = 0

カウンター初期化コードを下部ではなく上部に配置する場合は、デコレータを作成できます。

def static_vars(**kwargs):
    def decorate(func):
        for k in kwargs:
            setattr(func, k, kwargs[k])
        return func
    return decorate

次に、次のようなコードを使用します。

@static_vars(counter=0)
def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter

残念ながら、プレフィックスを使用する必要がまだありますfoo.

(クレジット:オニー

おすすめ記事