• python 匿名函数


    匿名函数

      匿名:隐藏名字,既没有名称
      匿名函数:没有名字的函数
      函数没有名字该如何定义?函数没有名字如何调用?
        lambda 表达式
      Python 中,使用 lambda 表达式构建匿名函数。

    lambda x : x ** 2    # 定义
    print((lambda x : x ** 2)(4))    # 调用,输出

      使用 lambda 关键字定义匿名函数,格式为:

    lambda [参数列表] : 表达式

      参数列表不需要小括号,无参就不写参数;
      冒号用来分割参数列表和表达式部分;
      不需要使用 return。表达式的值,就是匿名函数的返回值。表达式中不能出现等号;
      lambda 表达式(匿名函数)只能写在一行上,也称为单行函数。

    匿名函数往往用在为高阶函数传参时,使用 lambda 表达式, 往往能简化代码。

    # 返回常量的函数
    print((lambda : 0)())
        
    # 加法匿名函数,带缺省值
    print((lambda x, y=3: x + y)(5))
    print((lambda x, y=3: x + y)(5, y=10))
    
    # keyword-only 参数
    print((lambda x, *, y=3: x + y)(5))
    print((lambda x, *, y=3: x + y)(5, y=10))
    
    # 可变参数
    print((lambda *args: args)(*range(10)))  # 10
    print((lambda *args: [args])(*range(10)))  # 1
    print((lambda *args: [*args])(*range(10)))  # 10
    print((lambda *args: {x for x in args})(*range(10)))
    print((lambda *args: {x % 2 for x in args})(*range(10)))  # 去重
    print((lambda *args: (x for x in args))(*range(10)))  # 生成器表达式
    for i in (lambda *args: (x for x in args))(*range(10)):
        print(i)
    
    [x for x in (lambda *args: map(lambda x: x + 1, args))(*range(5))]  # 高阶函数
    [x for x in (lambda *args: map(lambda x: (x + 1, args), args))(*range(5))]
    # 例:简单排序
    l1 = [1, 2, '1', 'a']  # sorted 函数
    
    
    # 使用函数
    def fn(x):
        if isinstance(x, str):
            return ord(x)
        return x
    
    
    print(sorted(l1, key=fn))
    
    # 使用 lambda
    print(sorted(l1, key=lambda x: ord(x) if isinstance(x, str) else x))




  • 相关阅读:
    基于Spring+SpringMVC实现AOP日志记录功能service注入异常为null的解决办法
    关于SpringBoot项目打包没有把依赖的jar包一起打包的解决办法
    JavaFx项目打包成exe,并集成Jre,使Java项目在任意机器运行
    常用正则表达式
    SqlServer 2005及其以上版本能用的查询数据的行号
    js 中的倒计时功能
    数据库删除重复列
    【转】svn文件清除批处理工具
    JS获取当前页面名称
    sql 去除重复记录
  • 原文地址:https://www.cnblogs.com/zyybky/p/12760053.html
Copyright © 2020-2023  润新知