Курс 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. Сортировка данных с лямбда-функциями
  2. IPython и Jupyter Notebook: руководство
  3. Создание тестовых данных с Faker
  4. Рациональные числа в Python
  5. Функция zip() для объединения списков
  6. Сравнение объектов в Python
  7. Создание и использование модулей в Python
  8. Методы в Python
  9. Генерация QR-кодов с библиотекой qrcode
  10. Python и Юникод: работа с цифрами
  11. F-строки в Python
  12. Аннотации типов в Python
  13. Обработка исключений в Python 3
  14. Переопределение метода __floordiv__
  15. Безопасный доступ к значениям словаря
  16. Структура строк в Python
  17. Получение локальных переменных в Python
  18. Работа с комплексными числами
  19. Возврат нескольких значений
  20. Комментарии в Python
  21. Основы слова
  22. Декораторы классов
  23. Делегирование в Python
  24. Генераторы в Python
  25. Хранение данных
  26. Создание веб-приложения с Flask
  27. Создание копии итератора
  28. Enum в Python
  29. Руководство по использованию Colorama
  30. Создание коллекций из выражения-генератора
  31. Удаление элементов во время итерации
  32. Обновление множества в Python
  33. Декораторы с @wraps
  34. Функция sleep() в Python
  35. Объединение списков в Python
  36. Инверсия списка и строки в Python
  37. Логирование в Python
  38. Метод matmul для умножения матриц
  39. Удаление дубликатов из списка с помощью dict.fromkeys
  40. Гибкие функции Python
  41. Форматирование вывода списков
  42. Генераторы в Python
  43. Экспорт функций в Python
  44. Хеширование паролей с солью
  45. Декоратор Ajax required
  46. JSON в Python: модуль, dump, dumps, load
  47. Игра «Виселица» на Python

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