匿名函数 / Anonymous Function
匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name)。匿名函数通过 lambda 表达式进行构建。常用于快速建立起一个(一次性的)函数。
Note: lambda 是 Python 的一个表达式/关键字,类似 return,并非一个函数,而是能够生成匿名函数。
关于匿名函数的使用,可以用下面的方式,直接使用,
1 # Use directly 2 f = lambda x: x+1 3 def foo(x): return x 4 print(‘f type is:‘, type(f), ‘foo type is:‘, type(foo))
lambda 所生成的函数可以直接使用,此时可能有违匿名函数的概念,当 lambda 函数通过 lambda 表达式定义后,需要调用时由于函数匿名因此需要将其赋予某个变量,通过变量名进行调用,此时实际上已经对匿名函数进行了命名,因此与匿名的概念有所相违。
f type is: <class ‘function‘> foo type is: <class ‘function‘>
但直接使用并不是匿名函数的最佳使用方式,lambda 生成的匿名函数最佳的使用场景应该是当一个函数需要一个简单临时函数作为输入参数的时候,使用 lambda 生成匿名函数可以免去为这个中间函数进行定义命名的过程。例如使用 map 对可迭代对象的所有值进行平方的时候,用匿名函数完成平方计算便十分方便。
# Use as a calculate func in other function print(list(map(lambda x: x*x, [1, 2, 3, 4])))
同时,匿名函数也可以用在当需要 return 一个函数的场景下,免去对函数的命名。
1 # Use as a return func in other function 2 def foo(n): return lambda x: n+x 3 print(foo(‘n‘)(‘x‘))