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]())
    
  • 相关阅读:
    Ajax 学习笔记
    StringBulider简单用法
    asp.net 发送邮件
    log4net日志组件
    Web.Config文件详解
    关闭discuzX3.2注册页面的注册邮箱验证
    Oracle 序列(sequence)的创建、修改及删除
    MySQL 和 Oracle 主键自增长
    EL(表达式)语言的几种运算符
    SQL:select case when 的用法
  • 原文地址:https://www.cnblogs.com/my_captain/p/12799328.html
Copyright © 2011-2022 走看看