Курс 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"
- Сортировка данных с лямбда-функциями
- IPython и Jupyter Notebook: руководство
- Создание тестовых данных с Faker
- Рациональные числа в Python
- Функция zip() для объединения списков
- Сравнение объектов в Python
- Создание и использование модулей в Python
- Методы в Python
- Генерация QR-кодов с библиотекой qrcode
- Python и Юникод: работа с цифрами
- F-строки в Python
- Аннотации типов в Python
- Обработка исключений в Python 3
- Переопределение метода __floordiv__
- Безопасный доступ к значениям словаря
- Структура строк в Python
- Получение локальных переменных в Python
- Работа с комплексными числами
- Возврат нескольких значений
- Комментарии в Python
- Основы слова
- Декораторы классов
- Делегирование в Python
- Генераторы в Python
- Хранение данных
- Создание веб-приложения с Flask
- Создание копии итератора
- Enum в Python
- Руководство по использованию Colorama
- Создание коллекций из выражения-генератора
- Удаление элементов во время итерации
- Обновление множества в Python
- Декораторы с @wraps
- Функция sleep() в Python
- Объединение списков в Python
- Инверсия списка и строки в Python
- Логирование в Python
- Метод matmul для умножения матриц
- Удаление дубликатов из списка с помощью dict.fromkeys
- Гибкие функции Python
- Форматирование вывода списков
- Генераторы в Python
- Экспорт функций в Python
- Хеширование паролей с солью
- Декоратор Ajax required
- JSON в Python: модуль, dump, dumps, load
- Игра «Виселица» на Python















