zoukankan      html  css  js  c++  java
  • 函数进阶5.6匿名函数

    一、是什么

    匿名函数:没有名字的函数,在Python中用lambda定义

    示例

    lambda x, y: x + y  # 定义了一个匿名函数 1.没有名字 2.完成2个数的加法操作
    

      

    二、做什么

    1. 可以用一行代码完成简单的函数定义
    2. 可以当做实参快速传递到函数中去

    三、怎样用

    lambda关键词能匿名函数。这种函数得名于省略了用def声明函数的标准步骤

    1. 格式

    lambda函数的语法只包含一个语句,如下:

    lambda 形参1, 形参2, 形参3: 表达式
    

      

    2. 注意

    lambda函数能接收任何数量的参数但只能返回一个表达式的值,其默认就是返回的,不用写return

    3. 使用方式

    既然我们已经知道def定义函数时的变量存储的是函数的引用,所以只要有了这个函数的引用,也就可以通过变量名()的方式调用函数

    而,函数分为def定义的普通函数,和用lambda定义的匿名函数,所以无论一个变量例如b保存的是普通函数的引用,还是匿名函数的引用,都可以用b()方式调用b指向的函数

    一般情况下对匿名函数的使用有2种方式

    1. 通过lambda定义匿名函数,然后用一个变量指向这个匿名函数,然后通过变量名()调用这个匿名函数
    2. 直接在调用其它函数实参的位置通过lambda定义匿名函数,会将这个匿名函数的引用当做实参进行传递

    方式1示例:

    # 定义了一个匿名函数,然后让变量add_2_nums指向它
    add_2_nums = lambda x, y: x + y
    
    # 调用add_2_nums指向的匿名函数
    print("10+20=" % add_2_nums(10, 20))
    

      

     

    以上实例输出结果:

    0+20=30
    

      

    方式2示例:

    def fun(a, b, opt):
        print("a = %d" % a)
        print("b = %d" % b)
        print("result = %d" % opt(a, b))  # 此时opt指向了第7行定义的匿名函数,所以opt(a, b)就相当于调用匿名函数
    
    
    fun(1, 2, lambda x, y: x + y)  # 定义一个匿名函数,且将它的引用当做实参进行传递
    

      

     

    四、案例

    想一想,下面的数据如何指定按agename排序?

    stus = [
        {"name": "wanglaoshi", "age": 18},
        {"name": "donglaoshi", "age": 19},
        {"name": "dong4716138", "age": 17}
    ]
    

      

     

    按name排序:

    stus = [
        {"name": "wanglaoshi", "age": 18},
        {"name": "donglaoshi", "age": 19},
        {"name": "abc", "age": 17}
    ]
    
    print("排序前,stus=", stus)
    stus.sort(key=lambda x: x['name'])
    print("排序后,stus=", stus)
    

      

     

    按age排序:

    stus = [
        {"name": "wanglaoshi", "age": 18},
        {"name": "donglaoshi", "age": 19},
        {"name": "abc", "age": 17}
    ]
    
    print("排序前,stus=", stus)
    stus.sort(key=lambda x: x['age'])
    print("排序后,stus=", stus)
    

      

     

    说明

    image-20200903152848001

  • 相关阅读:
    Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分
    也谈PostgreSQL的Vacuum机制及其最佳实践
    django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS
    Error: Invalid CSS after
    win32-x64-64inding.node is not a valid Win32 application
    Error: Module did not self-register
    数据分析|如何利用BI工具,探索各商品的潜在关联价值
    Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
    Retrofit的文件上传和进度提示
    Retrofit的文件上传和进度提示
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15703309.html
Copyright © 2011-2022 走看看