Le comportement de l'argument par défaut de python semble être mal compris et effrayant, alors soyez prudent.
➜ ~ python
Python 2.7.11 (default, Feb 2 2016, 21:44:54)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def func(arg={}):
... return arg
...
>>> foo = func()
>>> foo['a'] = 'foo'
>>>
>>> bar = func()
>>> bar['b'] = 'bar'
>>> print(foo)
{'a': 'foo', 'b': 'bar'}
>>> print(bar)
{'a': 'foo', 'b': 'bar'}
L'argument par défaut est partagé entre les appels car il n'est évalué qu'une seule fois lorsque le module est chargé. Je me demande pourquoi j'ai fait cette spécification ...
Recommended Posts