Домой

Последняя активность

  

Функциональное программирование Python

PyDeKolt avatar PyDeKolt (0) [#] (27.05.2013 / 15:51)
Обзор apply, map, filter, reduce.
Для вызова функции, имя и список аргументов которой вы заранее не знаете, существует функция apply.
  1. def func(x,y,z):
  2. return x*y+z
  3. # Получает имя функции и список аргументов передаваемых в функцию и возвращает результат
  4. print apply(func, (2, 5, 10))
  5. # 20

Функция map позволяет применить некоторую операцию для каждого элемента последовательности и вернуть результат.
  1. def func(x):
  2. return x+10
  3. List = [2, 6, 3, 9]
  4. # Получает имя функции и список аргументов передаваемых в функцию и возвращает результат
  5. print map(func, List)
  6. # [12, 16, 13, 19]

Функция может содержать несколько аргументов
  1. def func(x,y):
  2. return x+10*y
  3. List = [2, 6, 3, 9]
  4. # Получает имя функции и список аргументов передаваемых в функцию и возвращает результат
  5. print map(func, List, [7, 13, 8, 24])
  6. # [72, 136, 83, 249]

Для обхода последовательности и выбора элементов удовлетворяющих условию применяется функция filter.
  1. List = [3, 7, 12, 9, 15]
  2. print filter((lambda x: x < 10), List) # Принимает функцию и последовательность элементов
  3. # [3, 7, 9]

Функция reduce поочередно вытаскивает из списка нужное количество элементов, передает их в функцию и суммирует результат всех действий.
  1. List = ['Hello', 'Mona', 'Welcome', 'John']
  2. print reduce((lambda string, name: "%s %s!" % (string, name)), List) # Принимает функцию и последовательность элементов
  3. # Hello Mona! Welcome! John!

Изменяемые значения по умолчанию в функциях. Между вызовами функций изменяемые значения запоминаются, что немного напоминает статические переменные.
  1. def func(x=[]):
  2. x.append(1)
  3. return x
  4. print func()
  5. print func()
  6. print func()
  7. print func()
  8. # [1]
  9. # [1, 1]
  10. # [1, 1, 1]
  11. # [1, 1, 1, 1]

Функции не содержащие инструкцию return являются процедурами. Такие функции возвращают значение None.
  1. def func(x):
  2. x+x
  3. print func(7)
  4. # None

* Онлайн учебник по питону
  Всего: 1

Зарегистрируйтесь и сможете комментировать все темы. Кнопочка вверху
Фильтр по автору
Скачать тему

В Форум

Новые вверху
Statok.net Рейтинг@Mail.ru
spywap.nettop-sid.ru
Яндекс.Метрика