Чистый код - это, конечно, круто, но не всегда просто. Вот, например, одна распространённая ошибка -
использование изменяемых типов данных как аргументы по умолчанию в функциях. Простой пример:
Программный код:
def add_element_to_list(element, lst=[]):
lst.append(element)
return lst
# Вызов функции
print(add_element_to_list(1)) # Ожидаем [1]
print(add_element_to_list(2)) # Ожидаем [2], но получаем [1, 2]
Всё из-за того, что значение аргумента lst сохраняется между вызовами функции. Как правильно:
Программный код:
def add_element_to_list(element, lst=None):
if lst is None:
lst = []
lst.append(element)
return lst
Попадали ли вы в такие ситуации?