Курс 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. Конкатенация списков в Python
  3. Метод setdefault() в Python
  4. Многоточие в Python
  5. Функции в Python: создание и вызов
  6. Группы исключений в Python
  7. Работа с GitHub в Telegram
  8. Карта бомбоубежищ в Москве и Питере
  9. Форматирование данных с pprint
  10. Декораторы с аргументами
  11. Работа с изменяемыми списками
  12. Проверка на палиндром
  13. Команда %dhist — список посещенных каталогов
  14. Получение значений из словарей
  15. Методы split() и join() — Python строк.
  16. Проверка строки на палиндром
  17. Сортировка элементов с OrderedDict
  18. Многопроцессорное программирование в Python
  19. Переопределение метода __eq__
  20. Функции min(), max(), sum()
  21. Повторение и перенос строки
  22. Функция reduce() в Python
  23. Python Метод Union Множеств
  24. Декораторы с @wraps
  25. Вычисление натуральных логарифмов в NumPy
  26. Установка и использование pyshorteners
  27. Удаление ссылок в Python
  28. Возврат нескольких значений из функции
  29. Преобразование регистра символов
  30. Метод join для наборов
  31. Хранение переменных в словаре.
  32. Функции range() в Python
  33. Подписка на SelectelNews в Twitter
  34. Работа с пакетами
  35. Удаление ключа из словаря
  36. Метод __int__ в Python
  37. Расширение операции побитового «и» в Python
  38. Методы работы со списками
  39. Анализ кода — Python
  40. Реализация метода __abs__ в Python
  41. GitHub в Telegram: подписка на уведомления
  42. Генераторы списков в Python
  43. Вывод баннеров
  44. Закрытие файла в Python
  45. Обработка StopIteration в Python
  46. Декораторы в Python
  47. Добавление элементов в список: append() vs extend()
  48. Обработка ошибок в Python

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