Курс 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"
- Работа с пакетами
- Метод rmatmul для обратного матричного умножения
- Сравнение строк в Python
- Метод gt в Python
- Работа с базами данных SQLite
- Явный импорт в Python
- Отладчик pdb: начало работы
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Функции с дополнением
- Модуль math: константы π и e
- Возврат нескольких значений
- Перемещение и удаление файлов в Python
- Функции высшего порядка в Python
- Функция enumerate() в Python
- Python Enum Weekday Usage
- Поиск самого длинного слова в списке с использованием max()
- Избегайте изменяемых аргументов
- Python Ellipsis использование
- Условное добавление элементов в список
- Оператор @ для умножения матриц
- Применение функции map() с лямбда-функциями
- Работа с датой и временем в Python
- Декоратор total_ordering для класса Point
- Игра «Угадывание чисел»
- Измерение времени выполнения кода
- JMESPath в Python
- Бинарный поиск
- Руководство по Pymorphy2
- Работа с NumPy.linalg
- Профилирование кода
- Применение функций в Python
- Методы работы со списками
- Поиск шаблона в начале строки
- Работа с файлами в Python
- Метод join для наборов
- Избегайте ошибку FileNotFoundError
- Работа с изображениями Pillow
- Ускорение обработки данных с %autoawait
- Списковые включения в Python
- Возведение в квадрат с помощью itertools
- Python: отсутствие точек с запятыми
- TON Smart Challenge #2: участие и подготовка
- Отделение звука от видео
- Импорт модуля из другого каталога
- Python Метод sleep() из time
- Метод add для класса Vector
- Управление ресурсами в Python
- Функция enumerate() — Python















