Подобным argspec является запах кода:
def my_function(things=[]):
    ...
Разработчики Python избежали бы этого, потому что
things создается во время определения, а не во время вызова, и это может вызвать странные ошибки.
Обычный шаблон для пустого списка по умолчанию:
def my_function(things=None):
    if things is None:
        things = []
    for thing in things:
        ...
Мне не очень нравится видеть составные элементы if arg is None в теле функций снова и снова. Возможно, лучший способ - использовать пустой кортеж:
def my_function(things=()):
    for thing in things:
        ...
Но каков эквивалентный "лучший" способ для сопоставления аргументов, т.е.
def my_function(things=None):
    if things is None:
        things = {}
    for thing in things.viewitems():
        ...
Есть ли что-то, что можно использовать в качестве неизменяемого типа отображения по умолчанию, учитывая, что PEP416 отклонен?
Обратите внимание, что значение по умолчанию необязательно должно быть пустым, это может быть кортеж или "зависание" разумных значений по умолчанию.
