美文网首页
python3 匿名函数

python3 匿名函数

作者: tafanfly | 来源:发表于2019-12-23 18:07 被阅读0次

    匿名函数概念

    匿名函数顾名思义即函数没有具体的名称, 由lambda表达式来表示。

    f = lambda x, y: x + y
    
    print (f, callable(f))
    print (f(1, 2))
    
    #result
    <function <lambda> at 0x7f88b2ddfe18> True
    3
    

    如上举例, lambda x, y: x + y 即为匿名函数。

    • 匿名函数需要关键字lambda来表达
    • x/y是匿名函数的参数
    • :为分隔符
    • 匿名函数有且仅有一个表达式,没有return,返回值就是该表达式的结果

    优缺点

    优点:

    • 没有函数名称,可以节省定义变量的内存
    • 无需担心和其他函数之间的命名冲突, 也不需要抓耳挠腮的起一个简单易懂的函数名
    • 简化函数,可以让代码更加简洁, 常常配合filter/map/reduce使用

    缺点:

    • 对不熟悉lambda的人而言,可能会造成代码的晦涩难懂

    应用注意

    1. 可以没有参数,也可以有一个或多个参数, 参数亦可有默认值

    f1 = lambda : 1
    f2 = lambda x: x + 1
    f3 = lambda x, y, z: x*x + y*y + z*z
    f4 = lambda x, y=2, z=3: x*x + y*y + z*z
    
    print(f1())
    print(f2(1))
    print(f3(1, 2, 3))
    print(f4(1))
    print(f4(2, 2, 2))
    print(f4(2, z=4))
    
    #result
    1
    2
    14
    14
    12
    24
    

    2.匿名函数也是一个函数对象,可以直接后面传递实参; 可以直接赋值给一个变量,再利用变量来调用该函数;也可以作为返回值返回

    print((lambda x, y, z: x + y + z)(1, 2, 3))
    
    f = (lambda x, y, z: x + y + z)
    print(f(1, 2, 3))
    
    def add_nums():
        return lambda x, y, z: x + y + z
    
    
    # 调用 add_nums 函数
    adds = add_nums()
    # 调用 lambda 函数
    print(adds(1, 2, 3))
    
    #result
    6
    6
    6

    相关文章

      网友评论

          本文标题:python3 匿名函数

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