zoukankan      html  css  js  c++  java
  • Python

    说匿名函数之前,先来回归一下函数的语法格式:

    def 函数名([形式参数1, 形式参数2, ....., 形式参数n]):
        函数体
    

    当函数中只有一行return语句时,函数的定义可以用一个lambda表达式来代替。



    lambda的语法格式:

    lambda [形式参数1, 形式参数2, ....., 形式参数n]: 关于形式参数的表达式
    


    lambda函数与普通定义函数的语法格式对比:

    • (1) 没有函数名
    • (2) 没有关键字def
    • (3) 没有小括号
    • (4) 关于形式参数的表达式相当于函数的返回值

    所以 lambda 函数就是匿名简化版的函数。

    对比:

    普通函数

    def add(num1, num2):
        return num1 + num2
    

    对应的lambda表达式

    lambda num1, num2: num1 + num2
    

    lambda表达式打印

    lambda num1, num2: num1 + num2
    
    # 在python中,一切皆为对象,所以lambda表达式也是对象,从而lambda表达式可以被赋值给变量。
    le = lambda num1, num2: num1 + num2
    print(le(1, 2))  # 3
    


    一个函数可以作为另外一个函数的实参,从而lambda表达式也可以作为一个函数的实参。

    引用上一节课的例子:map函数,如果不记得 map 函数的使用方法,看这个
    https://www.cnblogs.com/wwho/p/14454408.html

    result = map(lambda x: x * x, [1, 2, 3])
    print(list(result))  # [1, 4, 9]
    


    一个函数可以作为另外一个函数的返回值

    还是拿上节课的例子:
    https://www.cnblogs.com/wwho/p/14454408.html

    # -*- coding: UTF-8 -*-
    
    def add(num1, num2):
        return num1 + num2
    
    print(add)
    
    def do_sth():
        return add
    
    print(do_sth()(2, 3)) # 结果:5
    

    使用lambda表达式替换

    def do_sth():
        return lambda num1, num2: num1 + num2
    
    print(do_sth()(2, 3)) # 结果:5
    

    使用 lambda 函数简化一些

  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/wwho/p/14458211.html
Copyright © 2011-2022 走看看