[#] [Перевод] Введение в функциональное программирование на Python
habrabot(difrex,1) — All
2015-05-14 09:00:02


Рассуждая о функциональном программировании, люди часто начинают выдавать кучу «функциональных» характеристик. Неизменяемые данные, функции первого класса и оптимизация хвостовой рекурсии. Это свойства языка, помогающие писать функциональные программы. Они упоминают мапирование, каррирование и использование функций высшего порядка. Это приёмы программирования, использующиеся для написания функционального кода. Они упоминают распараллеливание, ленивые вычисления и детерменизм. Это преимущества функциональных программ. Забейте. Функциональный код отличается одним свойством: отсутствием побочных эффектов. Он не полагается на данные вне текущей функции, и не меняет данные, находящиеся вне функции. Все остальные «свойства» можно вывести из этого. Нефункциональная функция:

a = 0
def increment1():
global a
a += 1


Функциональная функция:

def increment2(a):
return a + 1


Вместо проходов по списку используйте map и reduce [Читать дальше →][1]

[1]: http://habrahabr.ru/post/257903/#habracut