概述
Python中的lambda关键字,可以用来创建一个小的匿名函数,即它的返回值是一个函数对象。
lambda函数可以在需要函数的任何地方使用
与嵌套函数一样,lambda函数可以引用所包含域的变量
lambda函数可以接受任意数量的参数,参数之间使用逗号分隔,但是只能有一个表达式
lambda表达式的语法格式
lambda [arg1 [, arg2 [, arg3 ...]]] : expression
实例演示:
不带参数的lambda表达式
if __name__ == "__main__":
x = lambda : '这是一个不带参数的lambda表达式'
print(x())
输出:
E:\Python3\Exercise\venv\Scripts\python.exe E:/Python3/Exercise/venv/02.py
这是一个不带参数的lambda表达式
Process finished with exit code 0
带参数的lambda表达式
计算两个数之和
if __name__ == "__main__":
x = lambda arg1, arg2: arg1 + arg2
print(x(10, 20))
输出:
E:\Python3\Exercise\venv\Scripts\python.exe E:/Python3/Exercise/venv/02.py
30
Process finished with exit code 0
带任意参数的lambda表达式
if __name__ == "__main__":
x = lambda *args: print(args)
x(10, 20, 30)
输出:
E:\Python3\Exercise\venv\Scripts\python.exe E:/Python3/Exercise/venv/02.py
(10, 20, 30)
Process finished with exit code 0
使用lambda表达式的好处
可以这样理解Python的lambda表达式:把它看作一个函数模板,可以根据不同的参数返回不同功能的函数对象,即使用相同的函数定义来生成不同功能的函数。
如下面的lambda表达式,用来生成一个计算一个数平方的函数和一个用来计算一个数立方的函数
def tempFunc(power):
return lambda num : num ** power
if __name__ == "__main__":
square = tempFunc(2);
print(square(10))
cube = tempFunc(3);
print(cube(10))
输出:
E:\Python3\Exercise\venv\Scripts\python.exe E:/Python3/Exercise/venv/02.py
100
1000
Process finished with exit code 0