Курс Python → Избегание изменяемых аргументов
Избегайте использования изменяемых аргументов по умолчанию в Python, так как это может привести к неожиданным результатам. Вместо этого, хорошей практикой является присваивание None значению аргумента по умолчанию и последующая проверка на то, передано ли какое-либо значение функции для этого аргумента.
Например, рассмотрим функцию, которая принимает список в качестве аргумента и добавляет элемент в этот список. Если использовать изменяемый список в качестве аргумента по умолчанию, то при каждом вызове функции будут использоваться одни и те же данные, что может привести к нежелательным побочным эффектам.
def add_element(item, my_list=None):
if my_list is None:
my_list = []
my_list.append(item)
return my_list
print(add_element(1)) # [1]
print(add_element(2)) # [2]
В данном примере, если не передать список при вызове функции, будет создан новый пустой список, к которому будет добавлен элемент. Таким образом, избегается использование одного и того же списка при каждом вызове функции.
Другие уроки курса "Python"
- Срезы в Python
- Операторы сравнения в Python
- Оператор assert в Python
- Замена текста с помощью sub
- Измерение времени выполнения кода
- Получение частей дроби
- Python: Фильтрация списков с помощью filter()
- Форматирование строк в Python
- Парсинг веб-страниц с Beautiful Soup
- Оператор «or» в Python
- Генерация UUID в Python
- Функция sleep() в Python
- Создание матрицы в Python
- Методы split() и join() — Python строк.
- Управление контекстом с помощью декоратора contextmanager
- Магические методы в Python
- ChainMap.new_child() — добавление нового словаря
- Изучение объектов с помощью dir()
- Удаление специальных символов
- Обновление ключей в Python
- Очистка списка от False, None, 0, «»
- Многострочные строки в Python
- Декораторы с @wraps
- Декоратор Ajax required
- Метод init в Python
- Создание новых функций через partial
- Инициализация переменных
- Создание виртуальной среды
- Проверка памяти объекта
- Проверка условий: all и any
- Преобразование данных в Python
- Добавление Progressbar в Python
- Удаление falsy-значений из списка с помощью filter
- Сортировка элементов в Python
- Очистка входных данных
- Операторы присваивания в Python
- Присвоение и ссылки
- Форматирование вывода списков
- Модуль xkcd: загрузка комиксов
- Метод repr() в Python
- Перезагрузка оператора в Python
- Конкатенация строк с join() в Python
- Бесконечная проверка в Python
- Solidity для DeFi Ethereum
- Метод matmul для умножения матриц
- Декодирование строк в Python
- Numpy: использование Ellipsis















