Курс 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
- Декораторы в Python
- Библиотека Rich: форматирование текста
- Поиск индексов в списке
- Работа с файлами в Python
- Передача неизвестных аргументов в Python.
- Lambda-функция в Python: использование с map() и sum()
- Извлечение данных из JSON
- Работа с itertools
- Функция rsplit() в Python
- Метод __ilshift__ для битового сдвига влево
- Защита данных в Python
- Условные выражения в Python
- Декораторы классов
- Асинхронное выполнение задач в Python
- Bootle — простой веб-фреймворк
- Работа со слайсами
- Делегирование в Python
- Метод округления чисел
- Переменная Шредингера
- Генераторы в Python
- Метод count() для списка
- Установка и использование pyshorteners
- Вложенные генераторы в Python
- Операторы += в Python
- Хэш-функции в Python
- Генерация фальшивых данных с Faker
- Работа с часовыми поясами в Python.
- Получение срезов итераторов
- Применение функций в Python
- Управление импортом в Python
- Запуск внешнего кода в Jupyter
- Разработка игры Pong с turtle
- Синхронизация доступа к ресурсам
- Библиотека itertools: объединение списков
- Применение промокода в Много лосося
- Обработка исключений в Python
- Создание детектора плагиата
- None в Python: использование и особенности
- Определение размера папок в Python
- Любовь к Python
- Ввод нескольких значений
- Проверка файла .py на синтаксис.
- Метод title() в Python















