Курс Python → Избегайте изменяемых аргументов
Один из распространенных источников ошибок при работе с функциями в Python — это использование изменяемых аргументов по умолчанию. Когда мы определяем функцию с аргументом по умолчанию, который является изменяемым объектом, таким как список или словарь, мы должны быть осторожны. При каждом вызове функции изменяемый аргумент по умолчанию не инициализируется заново, а используется последнее значение, которое было ему присвоено. Это может привести к неожиданным результатам, если мы не учитываем это поведение.
Давайте рассмотрим пример. У нас есть функция some_func, которая принимает аргумент default_arg со значением по умолчанию []. Если мы вызовем эту функцию без явного указания значения для default_arg, то при каждом вызове будет использоваться один и тот же список, который был инициализирован при определении функции. Если мы внутри функции изменим этот список, то он будет сохранен для последующих вызовов функции.
def some_func(arg=default_arg):
arg.append(1)
return arg
print(some_func()) # [1]
print(some_func()) # [1, 1]
Чтобы избежать подобных проблем, рекомендуется использовать неизменяемые объекты в качестве аргументов по умолчанию или создавать новый изменяемый объект внутри функции при каждом вызове. Например, вместо использования списка как аргумента по умолчанию, мы можем использовать None и внутри функции создать новый список, если аргумент не был передан.
Приведенный выше пример демонстрирует важность понимания того, как работают изменяемые аргументы по умолчанию в Python. Избегайте использования изменяемых объектов в качестве аргументов по умолчанию, если вы не уверены, как это поведение может повлиять на ваш код. Будьте внимательны и всегда тестируйте свой код, чтобы избежать неожиданных результатов.
Другие уроки курса "Python"
- Генерация случайных чисел Python
- Обновление ключей в Python
- Вычисление натурального логарифма в NumPy
- Экспорт данных с помощью writefile
- Основы слова
- Приближение чисел в Python
- Потоковый ввод в Python
- Вычисление разности множеств в Python
- Удаление элемента из списка в Python
- Логические значения в Python
- Множественные конструкторы в Python
- Генераторы данных
- Разделение строки с регулярными выражениями
- Получение значений из словарей
- Компиляция регулярных выражений
- Преобразование строки в число
- Получение ID текущего процесса
- Генераторы данных
- Перевод эмодзи и эмотиконов.
- Применение функций в Python
- Поиск подстроки в строке
- Возврат нескольких значений
- Автоматизация с Python
- Игра «Виселица» на Python
- Отладка утечек памяти в Python
- Именование столбцов в Python с pandas
- Поиск наиболее частого элемента в списке
- Python Метод sleep() времени
- Метод get() в Python
- Ключевое слово global в Python
- Оператор assert в Python
- Работа с буфером обмена на Python
- PUT запрос для обновления данных
- Профилирование с Pandas
- Удаление файлов в Python
- Условные выражения в Python
- Разделение функций на этапы
- Получение размера объекта с sys.getsizeof()
- Применение промокода в Много лосося
- Операции с датами в Python
- Атрибуты класса и экземпляра
- Переворот строки с использованием цикла
- Эффективная конкатенация строк с использованием join()
- Функции range() в Python
- Переименование файлов в Python
- Работа с изображениями Pillow
- Установка Home Assistant















