• Python的lambda表达式


    使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢?

    1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
    2 python lambda它只是一个表达式,而def则是一个语句。

    如果你在python 列表解析里用到python lambda,我感觉意义不是很大,因为python lambda它会创建一个函数对象,但马上又给丢弃了,因为你没有使用它的返回值,即那个函数对象。也正是由于lambda只是一个表达式,它可以直接作为python 列表python 字典的成员,比如:

    info = [lambda a: a**3, lambda b: b**3]

    在这个地方没有办法用def语句直接代替。因为def是语句,不是表达式不能嵌套在里面,lambda表达式在“:”后只能有一个表达式。也就是说,在def中,用return可以返回的也可以放在lambda后面,不能用return返回的也不能定义在python lambda后面。因此,像if或for或print这种语句就不能用于lambda中,lambda一般只用来定义简单的函数。

    三、lambda函数的用途

    1. 对于单行函数,使用lambda可以省去定义函数的过程,让代码更加精简。

    2. 在非多次调用的函数的情况下,lambda表达式即用既得,提高性能

    3.  如果可以使用for...in...if来完成的,坚决不用lambda。

    如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

    lambda 是为了减少单行函数的定义而存在的。

    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

    --------------------------------------------------------------

    lambda 语法: lambda [arg1[,arg2,arg3....argN]]:expression


    1. 单个参数的:
    g = lambda x:x*2
    print g(3)
    结果是6

    2. 多个参数的:
    m = lambda x,y,z: (x-y)*z
    print m(3,1,2)
    结果是4

    3. 无参数

    f = lambda:'beginman'

    f()   #beginman

    4. lambda used in filter, map, reduce function.

    print range(6)    # 0,1,2,3,4,5
    print range(1,6)  # 1,2,3,4,5
    print reduce(lambda x,y:x*y, range(1,6))  #1*2*3*4*5

    5. lambda can be used in common def fucntion.

    def action(x):
        return lambda y: x+y

    f = action(2) # this is a lambda object
    print f(3)    # 5

    -------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    5.Java 线程状态之 TIMED_WAITING
    3.Java 线程状态之 BLOCKED
    4.Java 线程状态之 WAITING
    2.Java 线程状态之 RUNNABLE
    1.关于Java的线程状态
    js注入,canvas截图
    node使用3
    node使用2
    node的使用1
    学习进度报告
  • 原文地址:https://www.cnblogs.com/kex1n/p/5984057.html
Copyright © 2020-2023  润新知