次の Python コード:
def test_function(a = []):
a.append('x')
print(a)
test_function()
test_function()
プリント:
['x']
['x', 'x']
a=[]
デフォルトの割り当ては一度だけ使用されるようです。その後a
、関数が再度呼び出されたときに再割り当てされない限り、関数のプロパティとして扱われます (例test_function(a=['hello'])
)。動作は Python2.x と 3.x で共有されているため、設計上の欠陥として認識されていないと思います。
知りたい:
- この行動のメカニズムは何ですか?
- この行動の背後にある理論的根拠は何ですか? (私には紛らわしいようです)