Выбрать главу
Рецепт создания функции в 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, то подразумеваются следующие функции: lambda, map, filter, reduce, zip.

Lambda выражение в Python:

lambda оператор или lambda функция в Python это способ создать анонимную функцию, то есть функцию без имени. Такие функции можно назвать одноразовыми, они используются только при создании. Как правило, lambda функции используются в комбинации с функциями filter, map, reduce.

Синтаксис lambda выражения в Python

1 | lambda arguments: expression

В качестве arguments передается список аргументов, разделенных запятой, после чего над переданными аргументами выполняется expression. Если присвоить lambda-функцию переменной, то получим поведение как в обычной функции (делаем мы это исключительно в целях демонстрации)

1 | >>> multiply = lambda x,y: x * y

2 | >>> multiply(21, 2)

3 | 42

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

Функция map() в Python:

В Python функция map принимает два аргумента: функцию и аргумент составного типа данных, например, список. map применяет к каждому элементу списка переданную функцию. Например, вы прочитали из файла список чисел, изначально все эти числа имеют строковый тип данных, чтобы работать с ними - нужно превратить их в целое число:

1 | old_list = ['1', '2', '3', '4', '5', '6', '7']

2 |

3 | new_list = []

4 | for item in old_list:

5 | new_list.append(int(item))

6 |

7 | print (new_list)

8 |

9 | [1, 2, 3, 4, 5, 6, 7]

Тот же эффект мы можем получить, применив функцию map:

1 | old_list = ['1', '2', '3', '4', '5', '6', '7']

2 | new_list = list(map(int, old_list))

3 | print (new_list)

4 |

5 | [1, 2, 3, 4, 5, 6, 7]