量化金融分析师AQF丨匿名函数并非 Python 独有的语法现象,在 MATLAB 和其他脚本语言中都有类似匿名函数的表达。Python借鉴了这种语法设置,并用一种简洁优雅的代码实现了匿名函数的表达。
以下是普通函数和匿名函数定义方式的差别及3个不同使用场合的例子:
In [1]:
# 普通函数的定义方式def func(*args, **kwards):
# expressions
return 0
In [2]:
# 匿名函数的定义方式# lambda 是标志匿名函数的关键字,其后是匿名函数的参数,冒号后是匿名函数的返回值lambda args: expressions
In [3]:
#例1#可以将匿名函数赋值给一个变量,这样可以实现对匿名函数的引用和重复使用func1 = lambda x: x + 5type(func1)
Out[3]:
function
In [4]:
# 以上匿名函数功能上等价于:def func2(x):
return x + 5# 两者的区别在于,匿名函数本身没有名字,赋值给变量的以后可以用变量名引用匿名函数func1(3), func2(3)
Out[4]:
(8, 8)
In [5]:
# 例2# 匿名函数可以有多个参数func3 = lambda x,y: x + yfunc3(3,5)
Out[5]:
8
匿名函数应用最多的场景,是作为参数直接传递给其他函数。匿名函数最初的产生就是为了快速定义一次性使用的简单函数。
In [6]:
# 例3# 匿名函数可以作为参数直接传递给其他函数from functools import reducer = [i for i in range(1,5)]print(r)# 匿名函数作为参数传递给reduce() 函数# 对reduce() 函数功能的说明,详见下一篇推送 《Pyton基础应用之map&reduce》cumprod = reduce(lambda x,y: x * y, r)cumprod
[1, 2, 3, 4]
Out[6]:
24
附上GIF动图,更直观了解Python金融实战应用,如果对此还有任何疑问,欢迎点击了解咨询~那么祝大家学习愉快~
量化金融分析师AQF交流答疑群:737550026
领取专属 10元无门槛券
私享最新 技术干货