Composing functions in python

前端 未结 12 1229
北荒
北荒 2020-11-27 03:56

I have an array of functions and I\'m trying to produce one function which consists of the composition of the elements in my array. My approach is:

def compo         


        
12条回答
  •  无人及你
    2020-11-27 04:04

    More general solution of Imanol Luengo from my point of view (python notebook example):

    from functools import reduce
    from functools import partial
    
    def f(*argv, **kwargs):
      print('f: {} {}'.format(argv, kwargs))
      return argv, kwargs
    
    def g(*argv, **kwargs):
      print('g: {} {}'.format(argv, kwargs))
      return argv, kwargs
    
    def compose(fs, *argv, **kwargs):
      return reduce(lambda x, y: y(*x[0], **x[1]), fs, (argv, kwargs))
    
    h = partial(compose, [f, g])
    h('value', key='value')
    output:
    f: ('value',) {'key': 'value'}
    g: ('value',) {'key': 'value'}
    
    m = partial(compose, [h, f, g])
    m('value', key='value')
    output:
    f: ('value',) {'key': 'value'}
    g: ('value',) {'key': 'value'}
    f: ('value',) {'key': 'value'}
    g: ('value',) {'key': 'value'}
    

提交回复
热议问题