python – 在函数中调用2个函数

参见英文答案 > Assign multiple functions to a single variable?                                    3个
问题如下:

写一个函数compose,它接受两个函数作为参数,我们称它们为Fa和Fb,并返回一个函数Fres,这意味着来自另一个函数的outdata是indata到第一个,ex:Fres(x)= Fa(Fb( X)).
运行示例:

>>> def multiply_five(n):
... return n * 5
...
>>> def add_ten(x):
... return x + 10
...
>>> composition = compose(multiply_five, add_ten)
>>> composition(3)
65
>>> another_composition = compose(add_ten, multiply_five)
>>> another_composition(3)
25

所以据我所知,如果我发送3函数compose将需要3 10 = 13
之后将结果发送到乘法函数中它会做:13 * 5女巫是65.
这是我到目前为止编写的代码:

def multiply_five(n):
    return n*5

def add_ten(x):
    return x+10

def compose(func1, func2):
    def comp(arg):
        return func2(arg)
    return func1(comp(arg))

我得到编译错误,我尝试了一些不同的方法:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    composition = compose(multiply_five, add_ten)
  File "C:\Users\Jim\Desktop\tdp002\5h.py", line 10, in compose
    return func1(comp(arg))
NameError: name 'arg' is not defined
最佳答案
你不想再调用func1或func2;你只想返回一个可以同时调用它们的函数.

def compose(func1, func2):
    def _(*args, **kw):
        return func1(func2(*args, **kw))
    return _

您也可以使用lambda表达式来创建组合函数.

def compose(func1, func2):
    return lambda *args, **kw: func1(func2(*args, **kw))

转载注明原文:python – 在函数中调用2个函数 - 代码日志