Курс 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"
- Область видимости переменных
- Numpy: объединение массивов
- Python enumerate() функции
- Курс Data Scientist в медицине
- Метод clear для коллекций
- Установка Git и AWS CLI
- Сортировка слиянием
- Аннотации типов в Python
- Получение локальных переменных в Python
- Создание уникального множества
- Переворот последовательности
- Определение имен функций
- Стать Python-разработчиком
- Создание Telegram-бота на Python
- Особенности запятых в Python
- Оператор is в Python
- Создание генераторов
- Функция count() в Python
- Определение размера папок в Python
- Настройка шрифта и цвета в Tkinter
- Принципы Zen of Python
- Установка максимального количества цифр
- Дизассемблирование Python кода
- Асинхронное выполнение задач в Python
- Добавление вложенных списков
- Генератор чисел Фибоначчи
- Инициализация переменных
- PrettyTable: создание таблицы
- Декоратор для группы пользователей в Django
- Метод init в Python
- Оператор обр. импликации
- Решатель судоку на Python с pygame
- Тестирование функции сложения
- Настройка логгера Logzero
- Dict Comprehension в Python
- Сортировка в Python
- Функция enumerate в Python
- Участие в LP стейкинге Waves
- Преобразование регистра строк
- Преобразование строк в числа с плавающей запятой
- Работа с контекстными менеджерами
- Python: Splat-оператор и splatty-splat
- Оптимизация памяти в Python
- Библиотека wikipedia для Python
- Список переменных с %who
- Преобразование списка в словарь через генератор
- Поиск уникальных и повторяющихся элементов
- Капитализация строк
- Особенности ключей словаря в Python















