デフォルト引数の後書き
知らんかった
>>> def foo(a,b,c): ... print locals() ... >>> foo(1,2,3) {'a': 1, 'c': 3, 'b': 2} >>> foo.func_defaults=(11,22,33) >>> foo() {'a': 11, 'c': 33, 'b': 22} >>> foo() {'a': 11, 'c': 33, 'b': 22} >>> foo(1) {'a': 1, 'c': 33, 'b': 22} >>> foo.func_defaults=(11,) >>> foo(1,2) {'a': 1, 'c': 11, 'b': 2}
へええええええ。後から変えられるんだー。不勉強
ということわ!
ひょっとしてpython初心者ひっかかるポイントなんばーわん(当社比)!の
>>> def foo(a = []): ... a.append("A") ... return a ... >>> foo() ['A'] >>> foo() ['A', 'A'] >>> foo() ['A', 'A', 'A']
こんなの。これこいつでなんとかなる?
>>> def foo(a=[]): ... a.append("A") ... foo.func_defaults = ([],) ... return a ... >>> foo() ['A'] >>> foo() ['A'] >>> foo() ['A'] >>> foo([1,2,3]) [1, 2, 3, 'A']
おお、よかんべじゃないですか
あとは
デコレータにでもすればいいのかな。ごめん、めんどくさくなりました;;;><;;;