Курс 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: список all
- Ключевое слово global в Python
- Лямбда-функции для min/max
- Использование метода lower()
- Работа с Path в Python
- f-строки в формате строк
- Логирование с Logzero: ротация файла
- Профилирование с Pandas
- Запуск файлового сервера
- Подсчет элементов в Python
- Возвращение нескольких значений
- Параллельные вычисления в Python
- Модуль pprint
- Принцип одной функции
- Объединение итераторов
- EMOT преобразование эмодзи в текст
- Объединение словарей в Python
- Участие в LP стейкинге Waves
- Нахождение максимального значения и его индекса в списке
- Переопределение метода __eq__
- Defaultdict в Python
- Открытие и запись файлов
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Тестирование модели в PyTorch
- Транспонирование 2D-массива с помощью zip
- Переопределение метода len
- Python 3.12: Псевдонимы типов
- Функции any() и all() в Python
- Копирование в Python
- Функции высшего порядка в Python
- Повторение элементов в Python
- Объединение кортежей в Python
- Измерение времени выполнения кода в Python
- Работа с NumPy
- Преобразование чисел в Python
- Получение списка кортежей из словаря
- Форматирование данных с pprint
- Преобразование символов с помощью map
- Установка пакета в Python
- Установка и использование Telegram API в Python
- Модуль inspect
- Аннотации типов в Python
- Поиск всех индексов подстроки
- Подчеркивание в REPL
- Конкатенация строк с методом join()















