Курс Python → Дефолтные параметры в Python
При определении функций в Python можно использовать дефолтные параметры, которые будут использоваться, если при вызове функции не переданы соответствующие аргументы. Однако, при использовании изменяемых объектов в качестве дефолтных параметров, может возникнуть проблема, когда изменения в этих объектах сохраняются между вызовами функции. Например, если использовать список в качестве дефолтного параметра и изменять его внутри функции, то изменения будут сохранены между вызовами функции.
Для решения этой проблемы можно воспользоваться ключевым словом None при определении аргументов по-умолчанию. Таким образом, при каждом вызове функции будет создаваться новый объект для дефолтного параметра, и изменения внутри функции не будут влиять на предыдущие или последующие вызовы.
def example_func(param=None):
if param is None:
param = []
param.append(1)
return param
print(example_func()) # [1]
print(example_func()) # [1]
В данном примере функция example_func принимает параметр param, который по-умолчанию равен None. Если при вызове функции параметр не передан, то создается новый пустой список. После этого к списку добавляется элемент 1 и он возвращается. При последующих вызовах функции каждый раз будет создаваться новый пустой список, и изменения не будут сохраняться между вызовами.
Другие уроки курса "Python"
- Замыкания в Python
- Именованные кортежи в Python
- Работа с прокси в Python
- Оператор assert в Python
- Импорт модуля из другого каталога
- Бесконечные списки в Python
- Установка максимального количества цифр
- Работа со стеком в Python
- Ограничение ресурсов в Python
- Метод join() для объединения элементов строки
- Оператор Walrus: правильное использование
- Кортежи в Python: особенности и преимущества
- Обезопасьте ввод данных
- Оператор @ для умножения матриц
- Преобразование числа в восьмеричную строку
- Изменение элемента списка
- Изменение объектов в Python
- Логирование с Loguru
- Ускорение кода с помощью векторизации
- Форматирование даты с strftime()
- Особенности запятых в Python
- Избегание циклических зависимостей классов в Python
- Метод lt для сортировки объектов
- Работа с изменяемыми коллекциями
- Импорт объектов из модулей
- Работа с deque из collections
- Конкатенация строковых литералов
- Работа с *args и **kwargs в Python
- Метод сравнения объектов в Python
- Python UserString — создание подклассов строк
- Срезы в Python
- Настройка нарезки списков
- Условные выражения в Python
- Лямбда-функции в цикле
- Однострочники Python
- Работа с файлами и директориями в Python.
- Печать календаря в Python
- Python Тесты и Гайды
- Получение обратного списка чисел
- Логирование в Python
- Многострочные комментарии в Python
- Python: Фильтрация списков с помощью filter()
- Переопределение оператора % для объектов
- Перехват исключений в Python
- Нарезка списков в Python
- Модуль xkcd: загрузка комиксов
- Деление в Python















