Подтвердить что ты не робот

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

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

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

4b9b3361