Python中匿名函数lambda是什么
1.什么是lambda
lambda是一种生成函数对象表达式形式,它返回的一个函数。由于它没有变量名,有时也被叫做匿名函数。
2.lambda语法
以lambda关键字开头,之后是一个或多个参数,接着是一个冒号,最后是一个表达式
lambda arg1, arg2, …argN: 表达式 注意:
- lambda是一个表达式,而不是一个语句
- lambda的主题是一个单个的表达式,而不是一个代码块
3.实例
实例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]())