Что такое неизменяемое отображение?

Подобным 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 отклонен?

Обратите внимание, что значение по умолчанию необязательно должно быть пустым, это может быть кортеж или "зависание" разумных значений по умолчанию.