Sobes.tech
Junior — Middle
74

Comment éviter les problèmes avec des valeurs par défaut mutables dans les définitions de fonctions en Python?

Entreprises à qui on a demandé
Медси

Réponse de l'IA

sobes.tech IA

В Python значения по умолчанию для параметров функции вычисляются один раз при определении функции, а не при каждом вызове. Если использовать изменяемый объект (например, список или словарь) в качестве значения по умолчанию, то все вызовы функции будут использовать один и тот же объект, что может привести к неожиданным результатам.

Чтобы избежать этой проблемы, обычно в качестве значения по умолчанию используют None, а внутри функции создают новый объект, если параметр равен None:

def func(param=None):
    if param is None:
        param = []  # создаём новый список при каждом вызове
    param.append(1)
    return param

print(func())  # [1]
print(func())  # [1], а не [1, 1]

Такой подход гарантирует, что каждый вызов функции работает с новым объектом, а не с общим изменяемым значением по умолчанию.