Курс 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"
- Подчеркивание в REPL
- Игра Виселица на Python
- Получение текущей директории
- Экспорт функций в Python
- Управление доступом к модулю
- Переопределение метода xor в Python
- Логирование с Logzero: ротация файла
- Метод setitem в Python
- Логирование с Logzero
- Добавление кнопки в tkinter
- Функции min(), max(), sum()
- Создание namedtuple списком полей
- Управление сессиями в Python
- Отладка производительности Python
- Работа с аргументами командной строки в Python
- Перевернуть список в Python
- Удаление элементов из списка в Python.
- Представление бесконечности в Python
- Установка и использование библиотеки google
- Поиск частых элементов в списке
- Навыки Python: строки, типы данных
- Сортировка данных в Python
- Python: Splat-оператор и splatty-splat
- Константы в модуле cmath
- Сортировка в Python
- Контекстный менеджер в Python
- Декораторы для регистрации функций
- Визуализация пропусков данных
- Копирование объектов в Python
- Основные методы NumPy
- Оператор in в Python
- Переворот строки
- Работа с *args и **kwargs в Python
- Измерение времени выполнения кода
- Метод get для словарей
- Присвоение и ссылки
- Основы работы с os
- Обработка исключений в Python
- Генерация UUID в Python
- Подписка на SelectelNews в Twitter
- Распаковка значений в Python
- Логирование в Python
- Проверка кортежей.
- Метод difference_update() — разность множеств
- Lambda Functions in Python















