tgoop.com/pythonl/5103
Create:
Last Update:
Last Update:
🔥 Совет по Python: неожиданное поведение с изменяемыми аргументами по умолчанию
Если в функции задать аргумент по умолчанию как list
или dict
, то этот объект создаётся один раз — при определении функции.
Из-за этого все вызовы будут делить один и тот же объект, что часто приводит к багам.
Правильный способ — использовать `None` и создавать новый объект внутри функции.
def bad_append(x, data=[]):
data.append(x)
return data
print(bad_append(1)) # [1]
print(bad_append(2)) # [1, 2] <-- неожиданно!
def good_append(x, data=None):
if data is None:
data = []
data.append(x)
return data
print(good_append(1)) # [1]
print(good_append(2)) # [2]
Используйте этот приём, чтобы не попасться на скрытые баги с аргументами по умолчанию.
BY Python/ django
Share with your friend now:
tgoop.com/pythonl/5103