Курс 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"
- Создание словарей с defaultdict()
- Использование функции enumerate()
- Работа со словарями с defaultdict из collections
- Переопределение метода __pow__
- Python groupby() из itertools: работа с повторяющимися элементами
- Метод Enumerate() для списков
- Расчет времени выполнения
- Преобразование чисел в слова
- Создание словарей и множеств в Python.
- Доступ к локальным переменным
- Измерение потребления памяти при сортировке
- Генератор данных в Keras
- Добавление вложенных списков
- Список переменных с %who
- Разбиение текста в Python
- Избегание изменяемых аргументов
- Метод join для объединения строк
- Создание словарей в Python
- Переменные класса и экземпляра
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Создание Radio кнопок в tkinter
- Обязательные аргументы в Python
- Функция с **kwargs в Python
- Философия Python
- Использование модуля __future__
- Метод ifloordiv для пользовательских классов
- Установка и использование Virtualenv
- UserList в Python: Описание и примеры использования
- Работа с процессами в Python
- Область видимости переменных в Python
- Создание GUI с Tkinter: Entry
- Передача словаря через **kwargs
- Метод Self в Python
- Оптимизация строк в Python
- Работа с Colorama
- Поиск наиболее частого элемента списке
- Форматирование строк с % в Python
- Идентификатор объекта в Python
- Проверка переменных окружения в Python
- Модуль array: создание и использование массивов
- Просмотр атрибутов и методов класса
- Оптимизация поиска в словарях
- Множества и frozenset
- Инвертирование словаря
- Проверка типа объекта в Python
- Перегрузка операторов в Python















