Введение в язык Питон


Другие функции высшего порядка - часть 2


      ...

      >>> def c(x):

      ...     print x*3,

      ...     return "c"

      ...

      >>> r = also(a,b,c)

      >>> r

     

      >>> r(5)

      5 10 15

      'a'

      >>> sequential([a,b,c],main=c)('x')

      x xx xxx

      'c'

Функции disjoin() и conjoin()  схожи с sequential() и also() в том смысле, что они также создают новые функции, которые применяют параметр(ы)  к нескольким составляющим функциям. Но disjoin()

выясняет, возвращает ли хотя бы одна из составляющих функций "истину" (true), а conjoin()  выясняет, возвращают ли все

функции "истину". При этом, когда это возможно, логика "короткого замыкания", поэтому при их вызове часть побочных эффектов может не проявиться. joinfuncs()

похожа на also(), но, в отличие от нее, возвращает кортеж результатов составляющих функций, а не выбирает одно значение.

В то время как вышеуказанные функции вызывают много функций с одинаковыми параметрами, функции any(), all() и none_of()

позволяют вызывать одну и ту же функцию для каждого значения из списка. В общем случае они подобны встроенным функциям map(), filter()

и reduce(). Но, в отличие от последних, эти функции задают булевы (логические) вопросы касательно набора возвращаемых величин. Например,

    #--------- Ask about collections of return values -------#

          >>> from functional import *

          >>> isEven = lambda n: (n%2 == 0)

          >>> any([1,3,5,8], isEven)



    Начало  Назад  Вперед



    Книжный магазин