python – 在函数中调用2个函数
发布时间:2020-12-20 11:55:24 所属栏目:Python 来源:网络整理
导读:参见英文答案 Assign multiple functions to a single variable?????????????????????????????????????3个 问题如下: 写一个函数compose,它接受两个函数作为参数,我们称它们为Fa和Fb,并返回一个函数Fres,这意味着来自另一个函数的outdata是indata到第一个,e
参见英文答案 >
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 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:UsersJimDesktoptdp0025h.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)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |