Вопрос проверяет понимание функционального подхода и контроля побочных эффектов.
Чистая функция не изменяет входные данные и возвращает новый результат. Для этого нужно работать с копиями объектов или использовать неизменяемые структуры. Также функция не должна зависеть от внешнего состояния. Это делает код предсказуемым и удобным для тестирования.
Определение:
Чистая функция — это функция, которая:
Не изменяет входные данные
Не использует внешнее состояние
Всегда возвращает одинаковый результат при одинаковых входных данных
def add_item(lst):
lst.append(1)
return lst
Она изменяет аргумент.
def add_item(lst):
new_list = lst.copy()
new_list.append(1)
return new_list
Исходный список остается неизменным.
Делать копии входных данных
Использовать неизменяемые типы
Не читать глобальные переменные
Не выполнять IO внутри функции
Тестирование
Параллельные вычисления
Кэширование результатов
Чистые функции уменьшают количество ошибок и делают поведение программы предсказуемым.