Общей ошибкой является установка изменяемого объекта в качестве значения по умолчанию аргумента в функции. Вот пример, взятый из this excellent write-up by David Goodger:Хорошо использует переменные значения аргументов функции?
>>> def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
Объяснение, почему это происходит here.
И теперь для моего вопроса: Есть ли хороший прецедент для этого синтаксиса?
Я имею в виду, что если каждый, кто сталкивается с ней, делает ту же ошибку, отлаживает ее, понимает проблему и пытается ее избежать, что там для такого синтаксиса?
См Http: // stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – sdolan
Лучшее объяснение, которое я знаю для этого, связано с связанным вопросом: функции являются первоклассными объектами, как и классы. Классы имеют изменяемые данные атрибутов; функции имеют изменяемые значения по умолчанию. – katrielalex
http: // stackoverflow.com/questions/2639915/why-the-mutable-default-argument-fix-syntax-is-so-ugly-asks-python-newbie – katrielalex