Курс Python → Проблема с изменяемыми аргументами
При написании функций в Python, одной из распространенных проблем является использование изменяемых типов данных в качестве аргументов по умолчанию. Это может привести к непредвиденным результатам, так как Python вычисляет значения по умолчанию для изменяемых типов только один раз — при создании функции. При последующих вызовах функции значение по умолчанию уже будет инициализировано и не будет изменяться.
Это означает, что если в функции вы используете изменяемый тип данных, например список или словарь, в качестве значения по умолчанию для аргумента, то при каждом последующем вызове функции это значение будет уже изменено и не будет соответствовать ожидаемому поведению.
Для избежания подобных проблем важно помнить, что при использовании изменяемых типов данных в аргументах по умолчанию, лучше инициализировать их внутри функции, а не при объявлении самой функции. Таким образом, каждый раз при вызове функции будет создаваться новый объект изменяемого типа данных и не будет конфликтов с предыдущими значениями.
def example_function(my_list=[]):
my_list.append(1)
return my_list
print(example_function()) # [1]
print(example_function()) # [1, 1]
В данном примере функция example_function использует список в качестве аргумента по умолчанию. При первом вызове функции список будет содержать один элемент [1]. Однако, при последующем вызове функции, список уже будет содержать два элемента [1, 1], так как значение по умолчанию изменилось после первого вызова.
Другие уроки курса "Python"
- Управление контекстом выполнения
- Принципы Zen Python
- Python: Фильтрация списков с помощью filter()
- Установка random seed в Python
- Работа с комплексными числами
- Запуск файлового сервера
- Встраивание HTML в Jupyter Notebook
- Использование эмодзи в Python
- Руководство по Pymorphy2
- Итерация по итерируемым объектам
- Работа с часовыми поясами в Python.
- Секреты Python
- Просмотр внешнего файла в Python
- Разделение списка на гнппы
- Метод join() для объединения элементов
- Поиск индекса элемента
- Принципы программирования
- Работа с базами данных SQLite
- Класс Counter() для подсчета элементов
- Функции all и any в Python
- Numpy: использование Ellipsis
- Типы возвращаемых значений в Python
- Создание циклической ссылки
- Функции с необязательными аргументами
- Удаление эмодзи с помощью pandas
- PEP-401: оператор
- Разработка Telegram-ботов
- Возврат нескольких значений
- Форматирование данных с pprint
- Библиотека schedule: планировщик задач
- Анализ кода — Python
- Добавление вложенных списков
- Профилирование данных с Pandas
- Атрибуты класса и экземпляра
- Проверка подстроки в строке
- Получение атрибутов и методов класса
- Функции высшего порядка в Python
- Python Аргументы по умолчанию
- Метод Self в Python
- Срезы в Python
- Работа с zip()
- Вложенные генераторы в Python
- Генерация UUID в Python
- Создание веб-приложения с Flask















