zoukankan      html  css  js  c++  java
  • 匿名函数lambda

    什么是lambda

    lambda是一种生成函数对象表达式形式,它返回的一个函数。由于它没有变量名,有时也被叫做匿名函数

    lambda语法

    以lambda关键字开头,之后是一个或多个参数,接着是一个冒号,最后是一个表达式

    lambda arg1, arg2, ...argN: 表达式
    

    注意:
    1.lambda是一个表达式,而不是一个语句
    2.lambda的主题是一个单个的表达式,而不是一个代码块

    实例

    实例1

    定义一个函数,传入三个参数,并返回它们的和
    使用def定义

    def func(x, y, z):
        return x + y + z
    
    print(func(1, 2, 3))
    

    使用lambda定义

    f = lambda x, y, z: x + y + z
    print(f(1, 2, 3))
    

    实例2

    传入三个位置参数,返回三个参数的拼接字符串。通过改变第一个默认参数的值,来改变返回的字符串
    使用def定义

    def contact_string(a='I', b=' like', c=' Python'):
        return a + b + c
    print(contact_string('We'))
    

    使用lambda定义

    x = (lambda  a="I", b=" like", c=" Python": a + b + c)
    print(x("We"))
    

    实例3

    编写跳转表
    使用def定义

    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))
    print(L[0](3))
    

    使用lambda定义

    L = [lambda x : x ** 2,
         lambda x : x ** 3,
         lambda x : x ** 4]
    
    for f in L:
        print(f(2))
    print(L[0](3))
    

    实例4

    使用字典的形式创建行为表
    使用def定义

    key = "got"
    def behavior(key):
        if key == "already":
            return 2 + 2
        elif key == "got":
            return 2 * 4
        elif key == "one":
            return 2 ** 6
    print(behavior(key))
    

    使用lambda定义

    key = 'got'
    print({
        'alredy': (lambda : 2 + 2),
        'got': (lambda : 2 * 4),
        'one': (lambda : 2 ** 6)
    }[key]())
    
  • 相关阅读:
    [BZOJ2127]happiness(最小割)
    [网络流24题]餐巾计划问题(费用流/有上下界的费用流)
    SQL注入-数据库判断
    Web渗透实验:基于Weblogic的一系列漏洞
    使用nmap 验证多种漏洞
    smb(ms17-010)远程命令执行之msf
    ashx后门
    Windows Server 2008 R2入门之用户管理
    windows2008,命令行远程登录
    利用jspx解决jsp后缀被限制拿shell
  • 原文地址:https://www.cnblogs.com/my_captain/p/12799328.html
Copyright © 2011-2022 走看看