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

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

DDD
リリース: 2024-12-16 19:03:16
オリジナル
213 人が閲覧しました

How Can I Simulate Static Variables in Python Functions?

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

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

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

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

<br>def foo():</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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 サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:Python で Pandas DataFrames とシリーズ全体をきれいに印刷するにはどうすればよいですか? 次の記事:Pandas DataFrame 列をビン化し、各ビン内の値をカウントするにはどうすればよいですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート