Каковы последствия использования непостоянных типов в качестве аргументов по умолчанию в Python?

1 ответ

От: http://www.network-theory.co.uk/docs/pytut/DefaultArgumentValues.html

Значение по умолчанию оценивается только один раз. Это имеет значение, когда по умолчанию используется изменяемый объект, такой как список, словарь или экземпляры большинства классов. Например, следующая функция накапливает аргументы, переданные ей при последующих вызовах:

def f(a, L=[]):
    L.append(a)
    return L

print f(1)
print f(2)
print f(3)

Это напечатает

[1]
[1, 2]
[1, 2, 3]

Если вы не хотите, чтобы значение по умолчанию было общим для последующих вызовов, вы можете написать такую ​​функцию:

def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L
Другие вопросы по тегам