Python基础15:匿名函数的使用场景,系统高阶函数及多层装饰器

114 阅读2分钟

目录:

一.匿名函数的使用场景

二.系统高阶函数

三.多层装饰器

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

一.匿名函数的使用场景:

匿名函数经常在高阶函数中被当做参数使用

例子:


def func1(a, f):
    print('+++++++++>', a)
    r = f(a)
    print('======>', r)


func1(8, lambda a: a + 7)   # 当想使用一个函数的返回值并且只用一次,这时候可以用匿名函数做参数

调用结果:

+++++++++> 8
======> 15

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

二.系统高阶函数:

高阶函数:
    在Python中,函数其实也是一种数据类型。其符号是function,。
通俗:在一个函数中,它的一个内部函数与其局部变量处于同等地位,将其作为参数或返回值。这样一个函数我们叫做高阶函数。

系统高阶函数:max min sorted

例子:


# 使用匿名函数找出列表中年龄最大的人

list1 = [('tom', 19), ('tony', 20), ('lily', 18), ('rose', 21)]

m = max(list1, key=lambda x: x[1])  # 对于list1这种含有多种数据类型的变量就可以用匿名函数,这种格式会自动先遍历再比较,这三个系统函数的使用各式是一样的
print(m)

调用结果:

('rose', 21)

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

三.多层装饰器:

顾名思义就是多个装饰器去装饰一个函数,这些装饰器们是按一定的顺序去装饰。先执行离被装饰函数较近的装饰器,再执行较远处的装饰器.

例子:

def zhuang1(can1):
    def nei1(*args, **kwargs):
        can1(*args, **kwargs)
        print('草房')

    print('1')
    return nei1


def zhuang2(can2):
    def nei2(*args, **kwargs):
        can2(*args, **kwargs)
        print('精装房')

    print('2')
    return nei2


@zhuang2  # 将被装饰器1装饰后的函数再用装饰器2进行装饰
@zhuang1  # 这里先用装饰器1
def toa(a):
    print(a)


toa('地基')

调用结果:

1
2
地基
草房
精装房  # 外部代码和内部代码执行也顺序之分,先按其顺序执行外部代码,再按其顺序执行内部代码和赋值