Курс 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. Применение функции к списку
  4. Сравнение def и lambda в Python
  5. Реверс строки и списка в Python.
  6. Лямбда-функции в Python
  7. Оператор in и not in в Python
  8. Форматирование строк с % в Python
  9. Поиск уникальных элементов строкой в Python
  10. Создание комплексных чисел
  11. Объединение словарей в Python
  12. Генерация фальшивых данных с Faker
  13. Метод rsub в Python: расширение функциональности вычитания
  14. Моржовый оператор в Python 3.8
  15. Декоратор total_ordering для сравнения объектов
  16. Удаление символа из строки
  17. Отладка утечек памяти в Python
  18. Аннотации типов в Python
  19. Проверка кортежей.
  20. Работа с argparse
  21. Декораторы в Python
  22. Python: Фильтрация списков с помощью filter()
  23. Преобразование данных в Python
  24. Работа с дробями в Python
  25. Подсчет частоты элементов с Counter
  26. Установка и использование pyshorteners
  27. Эффективная конкатенация строк с использованием join()
  28. Lambda Functions in Python
  29. Поиск HTML-элементов с BeautifulSoup
  30. Функция all() в Python
  31. Псевдонимы в Python
  32. Отделение звука от видео
  33. UserString в Python
  34. GitHub в Telegram: подписка на уведомления
  35. Декораторы в Python
  36. Объединение словарей в Python
  37. Создание namedtuple из словаря
  38. Оператор in для Python
  39. Парсинг статей с Newspaper3k
  40. Комплексные числа в Python
  41. Обновление ключей в Python
  42. Запрос пароля с помощью getpass
  43. Структуры данных в Python
  44. Шаблоны Flask: условия и циклы
  45. Установка и использование Python-dateutil
  46. Получение ID процесса
  47. Списковый компрехеншен.
  48. Тип CodeType в Python.
  49. Передача аргументов в Python
  50. Область видимости переменных

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