Python匿名函数及其应用:作回调函数传参

匿名函数是定义简单函数的一种方式,定义简单,由关键字lambda,参数,冒号,返回值四部分构成。返回值必须能表明与参数的关系,参数可以省略。不有多余代码,只能用于定义一句话函数。

如果一个函数的参数为函数引用,则此参数函数有名曰:回调函数。函数的代码块没有这个之前最多通过传某些类型参数让待处理的变量是动态的,而现在有了它参数类型进一步扩展,让代码块中对变量的处理也变为动态的。

以下代码包括通过函数回调实现仿版reduce ,filter, map函数的过程。

#匿名函数及其应用(作回调函数传参)

f=lambda x:x+1#返回函数引用给f

print(f(4))#函数引用配(),在传入参数可以调用函数

def calc(fun,li=[]):#仿map
    res=[]
    for i in li:
        print(i,fun(i))
        res.append(fun(i))
    return res

list1=[1,2,3,4,5]

print("first",calc(f,list1))
print("second",calc(lambda x:x+1,list1))

print(list(map(f,list1)))

print("_____________________________________________")


f1=lambda x:not x.endswith("sb")


def calc1(fun,v=[]):#仿filter
    res=[]
    for i in v:
        if fun(i):
            res.append(i)
    return res

print("first",list(calc1(f1,["is","whsb","slisb","dfsb"])))

print("second",list(filter(f1,["is","whsb","slisb","dfsb"])))


print("_____________________________________________")
f2=lambda x,y:x*y

def calc2(fun,v=[],initnum=None):#仿reduce

        num=v.pop(0)
        for i in v:
            num=fun(num,i)
        if initnum!= None:
            num*=initnum
        return num

print(calc2(f2,[2,3,4],10))
from functools import reduce
print(reduce(f2,[2,3,4],10))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值