あるにはあるんですが、結局クラス作ってどーたらこーたらで仰々しい。
というか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"の略。
・・・これで良いような気がするんだけど、どうなんだろう。