Функции. Продолжение
Распаковка и упаковка аргументов; параметры по умолчанию; функции как объекты первого класса; рекурсия
Распаковка и упаковка аргументов
Функции могут принимать неопределенное количество аргументов.
Для того, чтобы функция приняла и обработала все переданные позиционные аргументы, используется синтаксис
*args:
Практика: напишите функцию, которая перемножает все переданные ей аргументы
Это была упаковка аргументов. А так выглядит распаковка:
Вы увидели использование кортежей — это тип данных: неизменяемая последовательность. Поддерживает индексацию, срезы и большинство методов, используемых для других последовательностей.
Параметры по умолчанию
Параметры по умолчанию позволяют задать значения по умолчанию для аргументов функции. Если аргумент не передан при вызове функции, то будет использовано значение по умолчанию.
Пример:
В этом примере age=30
устанавливает значение по умолчанию для аргумента age
. Если age
не передан при вызове, то будет использоваться 30.
Практика: определите функцию squaring (возведение в квадрат), которая имеет два параметра — число num и степень degree, которая по умолчанию равна 2.
Функции как объекты первого класса
В Python функции являются объектами первого класса. Это означает, что их можно передавать в качестве аргументов другим функциям, возвращать как значения других функций и хранить в переменных или структурах данных как любой другой объект.
Рассмотрим другой пример с передачей функции в качестве аргумента другой функции:
Практика:
Создайте функцию
filter_numbers(numbers, filter_func)
, которая принимает список чиселnumbers
и функциюfilter_func
. Функцияfilter_numbers
должна вернуть новый список, содержащий только те числа из исходного списка, для которыхfilter_func
возвращаетTrue
Пример использования:
Рекурсия
Рекурсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
"Чтобы понять рекурсию, надо понять рекурсию"
Рекурсия в программировании — это вызов функции из неё самой
Принцип рекурсии — при каждом вызове подзадача должна становиться проще задачи. Важно предусмотреть крайний случай — до которого мы будем углубляться
Посмотрите на примеры функций. Попробуйте запустить код, проанализируйте результат
Практика:
Напишите функцию, которая принимает число и возвращает его факториал
Напишите рекурсивную функцию нахождения числа Фибоначчи. Функция принимает порядковый номер числа Фибоначчи и возвращает его значение. Дополнительно: реализуйте задачу при помощи итеративной функции
Last updated