home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

日記/2009/03/16/Pythonの関数でstaticな変数を使いたい時

作成日: 2009-03-16 00:48:33   /   last updated at: 2009-03-16 00:52:23
カテゴリ: Python 

あるにはあるんですが、結局クラス作ってどーたらこーたらで仰々しい。

というかstatic変数ってある種グローバルな変数なので、いっそ関数オブジェクトの属性として入れておけば良いんじゃないのか、と思ってこんな感じにしてみた。

>>> def f1(a1, sd='ABC'):
...   if not hasattr(f1, 'hoge'):
...     f1.hoge = sd
...   f1.hoge = f1.hoge + a1
...   return f1.hoge
...
>>> f1('abc')
'ABCabc'
>>> f1('def')
'ABCabcdef'
>>> f1('ghi')
'ABCabcdefghi'

"sd"というのは"Static Default"の略。

・・・これで良いような気がするんだけど、どうなんだろう。

original url: https://www.glamenv-septzen.net/view/210