Курс Python → Избегание изменяемых аргументов

Избегайте использования изменяемых аргументов по умолчанию в Python, так как это может привести к неожиданным результатам. Вместо этого, хорошей практикой является присваивание None значению аргумента по умолчанию и последующая проверка на то, передано ли какое-либо значение функции для этого аргумента.

Например, рассмотрим функцию, которая принимает список в качестве аргумента и добавляет элемент в этот список. Если использовать изменяемый список в качестве аргумента по умолчанию, то при каждом вызове функции будут использоваться одни и те же данные, что может привести к нежелательным побочным эффектам.


def add_element(item, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(item)
    return my_list

print(add_element(1)) # [1]
print(add_element(2)) # [2]

В данном примере, если не передать список при вызове функции, будет создан новый пустой список, к которому будет добавлен элемент. Таким образом, избегается использование одного и того же списка при каждом вызове функции.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Декодирование строк в Python
  2. Преобразование строки в число
  3. Тестирование функции сложения
  4. Нахождение отличий в списках
  5. Работа с файловой системой в Python
  6. Очистка входных данных
  7. Избегайте изменяемых аргументов
  8. Работа с аргументами командной строки
  9. Работа с часовыми поясами в Python
  10. Работа с collections в Python
  11. Повторение элементов в Python
  12. Ускоренный импорт библиотек
  13. Декораторы в Python
  14. Запуск асинхронной корутины
  15. Генерация фальшивых данных с Faker
  16. Удаление специальных символов
  17. Преобразование Excel в PDF с Spire.XLS
  18. Частичное совпадение пользовательского ввода в Python 3.10
  19. Генератор списка в Python
  20. Компиляция регулярных выражений
  21. Тест скорости набора текста на Python
  22. Упрощение работы с JSON-данными в Python
  23. Описание скриптов в README
  24. Декодирование байтов в строку
  25. Поиск уникальных и повторяющихся элементов
  26. Управление ресурсами с контекстными менеджерами
  27. Атрибуты объекта в Python
  28. Пропуск строк в файле с itertools
  29. Функция с *args.
  30. Раздувающийся словарь в Python
  31. Лямбда-функции в цикле
  32. Работа с итераторами через срезы
  33. Метод __int__ в Python
  34. Разность множеств
  35. Операции с кортежами
  36. Глобальные переменные в Python
  37. Обновление и получение данных в SQLite
  38. Namedtuple в Python
  39. Создание GUI на Tkinter
  40. Цикл for в Python
  41. Перевернуть список в Python
  42. Копирование словарей и списков в Python
  43. Преобразование символов с помощью map
  44. Разделение строк методом split()
  45. Обработка ошибок в Python

Marketello читают маркетологи из крутых компаний