加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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
之后将结果发送到乘法函数中它会做: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: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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读