1.前言传入函数时,有时候不显式定义函数,直接传入匿名函数会更方便。2.匿名函数在Python中,对匿名函数的支持是有限的。还是以map()函数为例。在计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入一个匿名函数:print(list(map(lambdax:x*x,[1,2,3,4,5,6,7,8,9])))通过对比我们可以看出,匿名函数lambdax:xx实际上是:deff(x):returnx*x注:关键字lambda表示匿名函数,而冒号前面的x代表函数参数。匿名函数有个限制:只能有一个表达式,不用写return,返回值就是表达式的结果。匿名函数有一个优点:因为函数没有名字,所以不用担心函数名冲突。此外,匿名函数也是一个函数对象。也可以将匿名函数赋值给一个变量,然后使用变量调用函数:f=lambdax:x*xprint(f)print(f(5))同样,也可以将匿名函数赋值给函数返回作为返回值,如:defbuild(x,y):returnlambda:x*x+y*y匿名函数的使用匿名函数通常用作高阶函数(higher-orderfunctions,参数为函数的函数)参数.例如几个内置函数:filter()、map()、reduce()。下面我们看看这几个函数的用法和python的另一个实现同样效果的特性的用法1.filterfunctionlist=[1,2,3]result=filter(lambdax:x%2==0,list)打印(结果)结果=[xforxinlistifx%2==0]打印(结果)2。mapfunctionresult=map(lambdax:x*2,list)print(result)result=[x*2forxinlist]print(result)注:map函数和filter函数都可以用listcomprehension代替。据说lambda是当年一个Lisp程序员加入python的,但Guido极力反对,列表推导式是他的最爱。3、跳转表(jumptable)lambda的另一个用法是写一个跳转表,即行为的列表或字典,可以按需执行特定的动作。key="get"{"abc":(lambda:2+2),"bcd":(lambda:3+3),"get":(lambda:4+4)}[key]()83.总结本文以Python基础为基础,介绍匿名函数在实践中的使用,介绍常见的匿名函数、过滤函数、map函数,并通过案例分析(跳表)和代码演示进行详细讲解。Python对匿名函数的支持有限,只有一些简单的情况可以使用匿名函数。使用Python语言可以让读者更好的理解。欢迎大家积极尝试。有时候看别人实现很简单,但是到了自己实现的时候,总会出现各种各样的问题。不要野心太大,努力理解得更深刻。代码很简单,希望对大家学习有所帮助。
