匿名函数

发布时间:2019-05-31 22:06:56编辑:auto阅读(1906)

    有名函数(掌握)

    我们之前定的函数都是有名函数,它是基于函数名使用。

    def func():
        print('from func')
    
    
    func()
    func()
    func()
    print(func)
    from func
    from func
    from func
    <function func at 0x108e32400>

    匿名函数(掌握)

    匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。

    lambda x, y: x+y
    <function __main__.<lambda>(x, y)>
    res = (lambda x, y: x+y)(1, 2)
    print(res)
    3

    与内置函数联用(掌握)

    匿名函数通常与max()、min()、filter()、sorted()方法联用。

    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }

    1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。

    1. 首先将可迭代对象变成迭代器对象
    2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
    salary_dict = {
        'nick': 3000,
        'jason': 100000,
        'tank': 5000,
        'sean': 2000
    }
    
    print(f"max(salary_dict): {max(salary_dict)}")
    
    
    def func(k):
        return salary_dict[k]
    
    
    print(f"max(salary_dict, key=func()): {max(salary_dict, key=func)}")
    # 'nick', v1 = func('nick')
    # 'jason', v2 = func('jason')
    # 'tank', v3 = func('tank')
    # 'sean', v4 = func('sean')
    
    
    print(
        f"max(salary_dict, key=lambda name: salary_dict[name]): {max(salary_dict, key=lambda name: salary_dict[name])}")
    max(salary_dict): tank
    max(salary_dict, key=func()): jason
    max(salary_dict, key=lambda name: salary_dict[name]): jason

    2.如果我们想从上述字典中取出薪资最低的人,我们可以使用min()方法,但是min()默认比较的是字典的key。

关键字