Курс 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"
- Тип данных TypeVarTuple
- Основы работы с базами данных в Python
- Векторизация в Python с NumPy.
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Работа с itertools
- Область видимости переменных в Python
- Атрибуты объекта в Python
- Основы Python за 14 дней
- Разделение строк в Python
- Аргументы *args и **kwargs
- Определение размера папок в Python
- Взаимодействие с sys
- Парсинг веб-страниц с Beautiful Soup
- Декораторы для регистрации функций
- Замыкания в Python
- Подсказки при вводе данных в Python
- Принципы SRP и OCP
- Условные выражения в Python
- Контроль точности вывода чисел
- Поиск повторов в списке
- lru_cache оптимизация функций
- Показ всплывающих окон Tkinter
- Проверка существования переменной с оператором :=
- Операции с матрицами в Python
- Сериализация объектов в Python
- JSON-esque в Python
- Обработка ошибок в JSON данных
- Оператор «моржа» (Walrus Operator)
- Запуск Python из интерпретатора
- Функции min(), max(), sum()
- ChainMap избыточные ключи
- Создание файла с проверкой ошибки
- Создание и инициализация объектов
- Python Enumerate
- Namedtuple в Python
- Повторение элементов в Python
- Оператор del в Python
- Очистка списка от False, None, 0, «»
- Обработка исключений в Python
- Логирование с Loguru
- Кортежи в Python: особенности и преимущества
- Создание генераторов в Python
- Рациональные числа в Python















