×
Traktatov.net » Введение в Python » Читать онлайн
Страница 14 из 26 Настройки

:


>| def fact(num):

>| if num == 0:

>| return 1# По договоренности факториал нуля равен единице

>| else:

>| return num * fact(num - 1)

>| # возвращаем результат произведения num и результата возвращенного функцией fact(num - 1)


Однако следует помнить, что использование рекурсии часто может быть неоправданным. Дело в том, что в момент вызова функции в оперативной памяти компьютера резервируется определенное количество памяти, соответственно чем больше функций одновременно мы запускаем - тем больше памяти потребуется, что может привести к переполнению стека (stack overflow) и программа завершится аварийно, не так как предполагалось. Учитывая это, там где это возможно, вместо рекурсии лучше применять циклы.

Рецепт создания функции в Python

Существует следующий алгоритм - рекомендация по созданию функции в Python. Например, мы создаем функцию вычисления площади прямоугольника.

1. Начинать следует с примеров того, что делает функция, и подобрать подходящее название. В нашем случае это будет выглядеть так:

>| # На данном этапе мы еще не указываем имена переменных

>| def rectangle_area_finder( ):

>| """

>| >>> rectangle_area_finder(3, 5)

>| 15

>| >>> rectangle_area_finder(17.2, 6)

>| 103.2

>| """


2. Указать типы данных, которые принимает функция и тип данных, который она возвращает

>| # функция принимает два числа, а возвращает одно

>| def rectangle_area_finder( ):

>| """

>| (num, num) -> num

>| >>> rectangle_area_finder(3, 5)

>| 15

>| >>> rectangle_area_finder(17.2, 6)

>| 103.2

>| """


3. Подобрать подходящие названия для переменных

>| # Поскольку это математическая функция нам вполне подойдут имена a и b

>| def rectangle_area_finder(a, b):

>| """

>| (num, num) -> num

>| >>> rectangle_area_finder(3, 5)

>| 15

>| >>> rectangle_area_finder(17.2, 6)

>| 103.2

>| """


4. Написать краткое, но содержательное описание функции

>| def rectangle_area_finder(a, b):

>| """

>| (num, num) -> num

>| Returns an area of a rectangle with given sides a and b.

>| >>> rectangle_area_finder(3, 5)

>| 15

>| >>> rectangle_area_finder(17.2, 6)

>| 103.2

>| """


5. Написать собственно тело функции

>| def rectangle_area_finder(a, b):

>| """

>| (num, num) -> num

>| Returns an area of a rectangle with given sides a and b.

>| >>> rectangle_area_finder(3, 5)

>| 15

>| >>> rectangle_area_finder(17.2, 6)

>| 103.2

>| """

>| return a * b


6. Функция готова! Осталось вызвать ее с указанными в примерах аргументами



Как видно, при вызове команды help() с именем нашей функции в качестве аргумента мы получаем написанную нами документацию.

Сопровождайте ваши функции качественной документацией и программисты, которые будут работать с вашим кодом после вас будут вам благодарны.

Функциональное программирование в Python: lambda, zip, filter, map reduce

Published: 09 March 2017

Функциональным называется такой подход к процессу программирования, в программа рассматривается как вычисление математических функций, при этом не используются состояния и изменяемые объекты. Как правило, когда говорят о элементах функционального программировании в Python, то подразумеваются следующие функции: