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))


发布了13 篇原创文章 · 获赞 18 · 访问量 809

猜你喜欢

转载自blog.csdn.net/qzonelaji/article/details/104076484