Курс 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. Метод rmatmul для обратного матричного умножения
  3. Сравнение строк в Python
  4. Метод gt в Python
  5. Работа с базами данных SQLite
  6. Явный импорт в Python
  7. Отладчик pdb: начало работы
  8. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  9. Функции с дополнением
  10. Модуль math: константы π и e
  11. Возврат нескольких значений
  12. Перемещение и удаление файлов в Python
  13. Функции высшего порядка в Python
  14. Функция enumerate() в Python
  15. Python Enum Weekday Usage
  16. Поиск самого длинного слова в списке с использованием max()
  17. Избегайте изменяемых аргументов
  18. Python Ellipsis использование
  19. Условное добавление элементов в список
  20. Оператор @ для умножения матриц
  21. Применение функции map() с лямбда-функциями
  22. Работа с датой и временем в Python
  23. Декоратор total_ordering для класса Point
  24. Игра «Угадывание чисел»
  25. Измерение времени выполнения кода
  26. JMESPath в Python
  27. Бинарный поиск
  28. Руководство по Pymorphy2
  29. Работа с NumPy.linalg
  30. Профилирование кода
  31. Применение функций в Python
  32. Методы работы со списками
  33. Поиск шаблона в начале строки
  34. Работа с файлами в Python
  35. Метод join для наборов
  36. Избегайте ошибку FileNotFoundError
  37. Работа с изображениями Pillow
  38. Ускорение обработки данных с %autoawait
  39. Списковые включения в Python
  40. Возведение в квадрат с помощью itertools
  41. Python: отсутствие точек с запятыми
  42. TON Smart Challenge #2: участие и подготовка
  43. Отделение звука от видео
  44. Импорт модуля из другого каталога
  45. Python Метод sleep() из time
  46. Метод add для класса Vector
  47. Управление ресурсами в Python
  48. Функция enumerate() — Python

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