Курс Python → Избегайте пустого списка
Пустой список нельзя использовать как аргумент по умолчанию в Python из-за того, что значения по умолчанию для аргументов функции вычисляются только один раз, при определении функции. Если вы попытаетесь использовать пустой список в качестве значения по умолчанию для аргумента функции, то он будет создан при определении функции и будет ссылаться на один и тот же объект в памяти каждый раз, когда функция вызывается.
Это означает, что если внутри функции изменяется пустой список, то изменение будет сохранено в этом списке для всех последующих вызовов функции, так как все они будут использовать один и тот же объект списка. Это может привести к неожиданным и нежелательным результатам, так как изменение списка в одном вызове функции может повлиять на другие вызовы, которые рассчитывают на неизменность значения по умолчанию.
Чтобы избежать подобных проблем, рекомендуется использовать в качестве значения по умолчанию неизменяемые объекты, такие как None, числа или строки. Если необходимо использовать изменяемый объект, то лучше создавать его внутри функции, чтобы каждый вызов функции работал с отдельным экземпляром объекта и не влиял на другие вызовы.
def my_function(my_list=None):
if my_list is None:
my_list = []
my_list.append("element")
print(my_list)
my_function() # ["element"]
my_function() # ["element"] (не изменяет значение по умолчанию)
В приведенном примере использовано None как значение по умолчанию для аргумента функции, и внутри функции создается новый пустой список, если аргумент не был передан. Это позволяет избежать проблем с изменяемыми объектами и гарантирует, что каждый вызов функции работает с отдельным списком, не влияя на другие вызовы.
Другие уроки курса "Python"
- Тестирование функции сложения
- Python itertools combinations() — группировка элементов
- Копирование в Python
- Округление дробей в Python
- Печать комбинаций в Python с Itertools
- Тест скорости набора текста на Python
- Создание графиков в терминале
- Многострочные комментарии в Python
- Получение комбинаций в Python
- Работа с библиотекой requests
- Создание и операции с дробями
- Python Метод del.
- Множественное присваивание в Python
- Модуль xkcd: загрузка комиксов
- Декораторы в Python
- Распаковка аргументов в Python
- Работа с модулем os в Python
- Официальный канал Python в Telegram
- Поиск наиболее частого элемента списке
- Использование type hints
- Область видимости переменных в Python
- Работа с deque в Python
- Создание итерируемых объектов
- Модуль pprint: улучшение вывода данных
- Импорт объектов из модулей
- Наиболее частотные элементы с помощью Counter
- Изменение логики работы с временем
- Создание списков в Python
- Непрерывная проверка в Python
- Переопределение метода __and__
- Метод index() в Python
- Операция += для списков
- Python Метод sleep() времени
- Проверка на палиндром
- Подсчет элементов в списке с Counter
- Оператор объединения словарей
- Определение объема памяти объекта
- JMESPath в Python
- Работа с OpenCV
- Сортировка в Python
- Отладчик pdb: начало работы
- Представление бесконечности в Python
- Безопасные SQL-запросы в Python 3.11
- Библиотека sh: удобные команды терминала
- Структура данных словарь в Python















