Python/Функциональное программирование на Python: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Итераторы: уточнение
Питон -> Python, rq шаблон
Строка 1:
[[Функциональное программирование]] является одной из парадигм, поддерживаемых языком программирования [[Python]]. Основными предпосылками для полноценного функционального программирования в Python являются: [[Функция высшего порядка|функции высших порядков]], развитые средства [[Обработка списков|обработки списков]], [[Рекурсия#Рекурсия в программировании|рекурсия]], возможность организации [[Ленивые вычисления|ленивых вычислений]]. Элементы функционального программирования в ПитонеPython могут быть полезны любому программисту, так как позволяют гармонично сочетать выразительную мощность этого подхода с другими подходами.
 
== Возможности ==
=== Определение и использование функции ===
 
Функция в ПитонеPython может быть определена с помощью оператора <code>def</code> или лямбда-выражением. Следующие операторы эквивалентны:
 
<source lang="python">
Строка 37:
=== Списочные выражения ===
 
Списочные выражения (''list comprehension'', иногда используется термин «списковые включения») — наиболее выразительное из функциональных средств ПитонаPython. Например, для вычисления списка квадратов натуральных чисел, меньших 10, можно использовать выражение:
<source lang="python">
l = [x**2 for x in range(10)]
Строка 44:
=== Встроенные [[Функция высшего порядка|функции высших порядков]] ===
 
В ПитонеPython есть функции, одним из аргументом которых являются другие функции: <code>map()</code>, <code>filter()</code>, <code>reduce()</code>, <code>apply()</code>.
 
==== map() ====
Строка 112:
</source>
 
Для наиболее распространенных операций в ПитонеPython есть встроенные функции:
 
<source lang="python">
Строка 136:
</source>
 
В последних версиях ПитонаPython вместо функции <code>apply()</code> можно применить специальный синтаксис (в продолжение примера выше):
 
<source lang="python">
Строка 202:
</source>
(Частичное применение функций также можно реализовать с помощью
[[Функциональное программирование на ПитонеPython#Замыкания|замыканий]] или
[[Функциональное программирование на ПитонеPython#Функторы|функторов]])
 
=== Ленивые вычисления ===
Строка 211:
* простейшие логические операции or и and не вычисляют второй операнд, если результат определяется первым операндом
* [[лямбда-исчисление|лямбда-выражения]]
* определенные пользователем классы с ленивой логикой вычислений<ref name="lazypy">[http://freshmeat.net/projects/lazypy/ Пакет lazypy]</ref> или [[Функциональное программирование на ПитонеPython#Функторы|функторы]]
* [[Python#Генераторы|Генераторы и генераторные выражения]]
* (Python 2.5) if-выражение имеет «ленивую» семантику (вычисляется только тот операнд, который нужен)
Строка 242:
=== Функторы ===
 
[[Функтор (программирование)|Функторами]] называют объекты, синтаксически подобные функциям, то есть поддерживающие операцию вызова.
Для определения функтора нужно перегрузить оператор <code>()</code> с помощью метода <code>__call__</code>. В
Python функторы полностью аналогичны функциям, за исключением специальных атрибутов
Строка 331:
* {{книга|автор=Mark Pilgrim.|заглавие=Dive Into Python|издательство=Apress|год=2004|isbn=9781590593561|страниц=413|ref=Pilgrim}}. [http://www.diveintopython.net/functional_programming/ Глава о функциональном программировании]{{ref-en}}
 
{{rq|refless|wikify|sources}}
 
[[Категория:Python]]