zoukankan      html  css  js  c++  java
  • 一文看懂Python匿名函数

    欢迎关注WX公众号:【程序员管小亮】

    前言

    在python 中,我们不仅仅定义普通的函数——就是使用def关键字定义的函数;同时还可以定义匿名函数。那么什么是匿名函数呢?

    1、定义:

    匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序,也就是没有名字的函数。

    python 使用 lambda 来创建匿名函数。在Python中,lambda 作为一个关键字,作为引入表达式的语法。想比较def函数,lambda 是单一的表达式,而不是语句块。lambda 这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的。

    2、语法格式:lambda 参数:表达式

    lambda 语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开;冒号右边的为表达式,需要注意的是只能有一个表达式。由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收。

    lambda [arg1 ,arg2,.....argn]:expression
    
    #  lambda 参数列表:return [表达式] 变量
    #  由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
    

    我的另一个博客中使用的例子来做一个简单地说明:

    add = lambda x, y : x+y
    add(1,2)  # 结果为3
    

    等价于函数

    def a(x, y):
        return x + y
    print(a(1, 2))
    

    关键字lambda表示匿名函数,冒号前面的x,y表示函数参数。

    3、注意点:

    lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。但是lambda 函数不能包含命令,包含的表达式不能超过一个,不用写return,因为返回值就是该表达式的结果。

    4、匿名函数优点:

    1)使用Python 写一些脚本时,使用lambda 可以省去定义函数的过程,让代码更加精简。

    2)对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda 不需要考虑命名的问题。

    >>> f = lambda x: x * x
    >>> f
    <function <lambda> at 0x10453d7d0>
    >>> f(5)
    25
    

    3)使用lambda在某些时候然后代码更容易理解。

    5、应用:

    在内置函数max()求最大值,min()求最小值, map()映射, reduce()合并, filter()过滤中会用到!

    # map()映射
    def f(x):
        return x * x
    print(list(map(f,[1,2,3,4,5,6,7])))
    
    >>> [1, 4, 9, 16, 25, 36, 49]
    
    # reduce()合并
    from functools import reduce
    
    def add(x,y):
        return x + y
    print(reduce(add, range(1, 101)))
    
    >>> 5050
    
    #  filter()过滤
    def is_odd(n):
        return n % 2 == 1
    newlist = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
    print(newlist)
    
    >>> [1, 3, 5, 7, 9]
    

    python课程推荐。
    在这里插入图片描述

    参考文章:

  • 相关阅读:
    javascript打开本地应用
    SDUT OJ -2892 A
    恳请CSDN的活动可以落实
    中国银联mPOS通用技术安全分析和规范解读
    UNIX环境编程学习——反思认识
    STM32F407VG (五)定时器
    请求的链式处理——责任链模式
    Shredding Company (hdu 1539 dfs)
    十天精通CSS3(6)
    十天精通CSS3(5)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302791.html
Copyright © 2011-2022 走看看