Курс 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"
- Декоратор Ajax required
- Сложные типы данных в Python
- globals и locals
- Оптимизация гиперпараметров в Python
- Метод init в Python
- Операторы присваивания в Python
- Измерение времени выполнения кода
- CSV строка разделение в Python
- GitHub в Telegram: подписка на уведомления
- Работа с CSV файлами
- Оператор деления для класса Rational
- Добавление цвета в консоли
- Условное добавление элементов в список
- Работа с YAML в Python
- Преобразование объекта в строку
- Математические функции в Python
- Генератор данных в Keras
- Тестирование функции сложения
- Замена текста с re.sub()
- Объединение кортежей в Python
- Работа с f-строками 2.0
- Генераторы данных
- Псевдонимы в Python
- Упрощенный вывод данных в Python
- Python enumerate() использование
- Эффективная конкатенация строк в Python
- Функция reduce() из модуля functools
- Генераторы в Python
- Транспонирование 2D-массива с помощью zip
- Условные выражения в Python
- Генераторы в Python
- Оператор break в Python
- Перезапуск ячейки в Jupyter Notebook с dostoevsky
- Форматирование строк в Python
- Поиск индекса элемента в списке
- Руководство по Pymorphy2
- Оператор += в Python
- Метод pop() списка
- Итераторы в Python
- Склеивание строк без циклов
- Разделение строки на пары ключ-значение.
- Работа с файлами в Python
- Явный импорт в Python
- Регистрация на TenChat
- Цикл for в Python















