Посты с тэгом reduce


[Перевод] Введение в функциональное программирование на Python


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

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

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

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


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

def increment2(a):
    return a + 1


Вместо п


Переходим на Python 3. Где же ты, reduce?

Это мой второй пост об освоении Python 3. Начался он с того, что захотелось мне использовать всем известную встроенную функцию reduce, а я вместо рабочего кода получил NameError. Оказывается в Python 3 она уже не встроенная, а находится в module functools, в который, начиная с версии Python 2.5, всунули несолько полезностей для работы с объектами-функциями. То есть теперь функцию reduce нужно импортировать.
from functools import reduce
Стоит заметить, что спецификация функции не поменялась, работает она точно также как и во втором питоне. Постал вопрос: "Зачем?". (Более подробно о reduce читаем в документации).