Курс 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
- Метод setdefault() в Python
- Многоточие в Python
- Функции в Python: создание и вызов
- Группы исключений в Python
- Работа с GitHub в Telegram
- Карта бомбоубежищ в Москве и Питере
- Форматирование данных с pprint
- Декораторы с аргументами
- Работа с изменяемыми списками
- Проверка на палиндром
- Команда %dhist — список посещенных каталогов
- Получение значений из словарей
- Методы split() и join() — Python строк.
- Проверка строки на палиндром
- Сортировка элементов с OrderedDict
- Многопроцессорное программирование в Python
- Переопределение метода __eq__
- Функции min(), max(), sum()
- Повторение и перенос строки
- Функция reduce() в Python
- Python Метод Union Множеств
- Декораторы с @wraps
- Вычисление натуральных логарифмов в NumPy
- Установка и использование pyshorteners
- Удаление ссылок в Python
- Возврат нескольких значений из функции
- Преобразование регистра символов
- Метод join для наборов
- Хранение переменных в словаре.
- Функции range() в Python
- Подписка на SelectelNews в Twitter
- Работа с пакетами
- Удаление ключа из словаря
- Метод __int__ в Python
- Расширение операции побитового «и» в Python
- Методы работы со списками
- Анализ кода — Python
- Реализация метода __abs__ в Python
- GitHub в Telegram: подписка на уведомления
- Генераторы списков в Python
- Вывод баннеров
- Закрытие файла в Python
- Обработка StopIteration в Python
- Декораторы в Python
- Добавление элементов в список: append() vs extend()
- Обработка ошибок в Python















