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 函数简化一些

  • 相关阅读:
    Django 基础教程
    Python之路【第十七篇】:Django【进阶篇 】
    Python之路【第十六篇】:Django【基础篇】
    Python之路【第十五篇】:Web框架
    AngularJS 教程
    jQuery
    最小公倍数生成树
    51nod 1743 雪之国度
    codeforces 633F The Chocolate Spree
    hihocoder 1246 王胖浩与环
  • 原文地址:https://www.cnblogs.com/wwho/p/14458211.html
Copyright © 2011-2022 走看看