美文网首页
匿名函数lambda

匿名函数lambda

作者: YuAllon | 来源:发表于2019-06-15 14:03 被阅读0次

    写在前面的话:

    在pandas 入门学习中,第一次接触到匿名函数lambda,虽然能猜懂其中lambda的作用,但仍觉得不够系统,尤其是与def的对比。这篇文章就是简单总结一下自己对lambda的理解。

    匿名函数:lambda

    在Python中有两种声明函数的方法:deflambda。与def一样,lambda创建了一个之后能够调用的函数,它返回该函数本身而不是将其赋值给一个变量名,这便是lambda称为匿名函数的原因。

    lambda表达式

    lambda函数的一般形式是:关键字lambda后面跟上一个或者多个参数,之后是一个冒号,最后是一个表达式。

    lambda argument1, argument2, ..., argumentN : expression using arguments 
    
    1. lambda是一个表达式,而不是语句
      因为这一点,lambda能够出现在Python语法不允许def出现的地方。譬如:列表、字典或者函数调用的参数中等。作为一个表达式,lambda返回一个值(一个新函数),而且可以选择性地被赋值给一个变量名。相反,def语句总是需要在头部将一个函数赋值给一个名称,而不是将函数作为结果返回。
    2. lambda的主体是一个单独的表达式,而不是一个代码块
      因为lambda是一个表达式,所以lambda通常要比def功能:只能在lambda的主体中封装有限的逻辑,连if语句都不能使用。lambda是为了编写简单的函数而设计的,合理的使用lambda函数可以使得代码更pythonic。

    def语句

    def name (arg1, arg2, ..., argN):
           statements
    

    例子

    def func(x,y,z):
        return x+y+z
    func(2,3,4)
    9
    #这里f被赋值给lambda创建的函数对象
    f = lambda x,y,z: x+y+z
    f(2,3,4)
    9
    

    为什么使用lambda

    lambda起到一种函数速写的作用,可以在使用它的代码中内嵌一个函数的定义,会带来更加简洁的代码结构。当然lambda是完全可选的,总可以使用def来代替lambda。

    L = [lambda x: x**2,
        lambda x: x**3,
        lambda x: x**4]
    for f in L:
        print(f(2))
    4
    8
    16
    #
    def f1(x):return x**2
    def f2(x):return x**3
    def f3(x):return x**4
    L = [f1, f2, f3]
    for f in L:
        print(f(2))
    4
    8
    16
    

    结语:

    有关lambda的简单总结到此就结束了,如何合理使用lambda使得代码更加简洁,只能留给后面的探索了。

    参考书籍:

    《Python学习手册》
    2019-06-15

    相关文章

      网友评论

          本文标题:匿名函数lambda

          本文链接:https://www.haomeiwen.com/subject/nrhbfctx.html