ホームページ >バックエンド開発 >Python チュートリアル >Python 関数で静的変数をシミュレートするにはどうすればよいですか?

Python 関数で静的変数をシミュレートするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-16 19:03:16275ブラウズ

How Can I Simulate Static Variables in Python Functions?

Python 関数の静的変数: C/C の模倣

C/C では、関数は静的変数を宣言して、関数呼び出し全体で状態を維持できます。一方、Python は、デフォルトでは関数内の静的変数をサポートしません。

Python 関数での静的変数の実装

Python 関数内で静的変数の動作を複製するには、次のコマンドを使用します。アプローチ:

<br>def foo():</p>
<pre class="brush:php;toolbar:false">if not hasattr(foo, "counter"):
    foo.counter = 0
foo.counter += 1
print("Counter is", foo.counter)

ここでは、関数内に「counter」属性が存在するかどうかを確認します。存在しない場合は、0 に初期化します。この初期化コードは、最初の関数呼び出しの開始時に実行されます。

デコレーター アプローチ

読みやすさを向上させ、初期化コードを次の場所に移動します。一番上では、デコレータを使用できます:

<br>def static_vars(**kwargs):</p>
<pre class="brush:php;toolbar:false">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", foo.counter)

クラススコープは静的影響を及ぼしますか変数?

関数をクラス内に配置しても、静的変数の実装は変更されません。静的変数は引き続き関数固有であり、クラス固有ではありません。

以上がPython 関数で静的変数をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。