zoukankan      html  css  js  c++  java
  • Python函数式编程:Lambda表达式

    首先我们要明白在编程语言中,表达式和语句的区别。

    表达式是一个由变量、常量、有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如  a + 1 就是个表达式,

    单独的一个常量、变量 或函数调用也是一个表达式。

    而语句通常是值程序设计语言中的一个指令,如 if, for ,print , break 等等 这些都是语句,语句是程序设计语言流程控制的语法部分。

    在python中,lambda表达式 是指一个匿名的函数。 我们举例来说明:

    >>> def fun(a):
    ...     return a+1;
    ...
    >>> f = fun;
    >>> f(3)
    4
    >>> f(5)
    6
    
    >>> def call(f,n):
    ...     return f(n)*2
    ...
    >>> call(fun,3)
    8

    上面的代码,定义了一个函数 fun,它的函数体只有一个单独的 "return 表达式"语句。
    后面的语句,演示了可以将函数作为值赋给一个变量,或者将函数作为参数传递给另外一个函数的操作。

    在python 中,对于这种函数体只有一个单独的 "return 表达式"语句的函数,可以把它定义为一个lambda表达式。

    lambda表达式相当于函数体为单个return语句的普通函数的匿名函数,但没有return语句,可以把它赋值给变量,或作为参数传递,或作为函数值返回。

    其语法格式是:

    lambda 逗号分隔的参数列表 : 表达式

    下面举例说明

    >>> f=lambda x : x+1
    >>> f(3)
    4
    >>> def call(f,n):
    ...     print f(n)
    ...
    >>> call(lambda x : x*x ,10)
    100

    上面的第一个语句,定义了一个lambda表达式,并赋值给了变量f,可以看出f就是一个函数。
    最后一个语句将lambda表达式作为参数传递给了一个函数。

    从上面的例子可以看出,lambda表达式 就是一个函数(可以带参数,有返回值),并且是匿名的函数,这在很多场景下都是有用的,尤其是在python的函数式编程的各个api中非常有用,如 filter, map,reduce等。关于python的函数式编程api,后面的文章中会涉及到。

    需要注意的是,lambda表达式的主体是一个表达式(和普通表达式没有任何区别),而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

  • 相关阅读:
    SSM中shiro的基本使用
    TortoiseGit小乌龟 git管理工具
    vux用法
    vue webpack打包
    vue2.0 watch
    vue2.0 $emit $on组件通信
    简单工具 & 杂技
    html基础问题总结
    Node应用进程管理器pm2的使用
    node express 登录拦截器 request接口请求
  • 原文地址:https://www.cnblogs.com/51kata/p/5438767.html
Copyright © 2011-2022 走看看