讨论大数据环境下匿名函数及其应用

2020-02-29 05:39李丹陕西工业职业技术学院信息工程学院
数码世界 2020年2期
关键词:表达式调用列表

李丹 陕西工业职业技术学院 信息工程学院

关键字:Python 匿名函数 应用

引言

在Python中,当需要定义一个功能简单且只有一个表达式时,可以省去函数命名的过程,而将此函数定义为匿名函数,同时也可以避免定义函数的过程中存在函数名重复的问题。本文讨论匿名函数的定义与调用,举例说明其应用。

1 匿名函数的定义与调用

(1)匿名函数的定义

匿名函数,顾明思议就是没有名字的函数,即不需要通过关键字def定义的函数。Python中,定义匿名函数使用关键字lambda,其一般格式为:

其中,冒号后面表达式的值作为匿名函数的返回值。

注:①参数列表中的参数可以是多个,并且参数之间用逗号进行分隔;

②表达式只能是一个表达式,即只能有一个返回值。

(2)匿名函数的调用

匿名函数一般不能直接使用,而是需要将其赋给一个变量,通过变量名(实参列表)来调用匿名函数。

注:实参列表中参数之间用逗号进行分隔,依次和参数列表中的参数从左往右一一对应。

例1:通过定义函数求10与2之差。

方法1:定义匿名函数实现,代码如下:

方法2:通过def定义函数实现,代码如下:

在Pycharm中运行这两个程序,最终结果都是8

从此例子中可以看出:对于同一问题,匿名函数比def定义的函数代码量少,更简单且更易理解。

(3)匿名函数和一般函数的区别

与通过def定义的函数相比,匿名函数有以下不同之处:

①匿名函数没有函数名,但是def定义的函数有函数名;

②匿名函数中只能有一个表达式,但是def定义的函数可以有多条语句;

③匿名函数中不可以使用选择和循环语句,但是def定义的函数可以;

④匿名函数直接返回表达式的值而不需要写return语句,但是def定义的函数要有返回值,则必须要用return语句;

⑤匿名函数只能处理简单问题,复杂问题还需通过def定义函数实现。

2 匿名函数的应用

在某些情况下,匿名函数处理问题非常有效。下面列举匿名函数的一些应用。

(1)匿名函数作为方法的参数

例2:将1-10之间每个元素的平方依次放在同一列表中。

代码如下:

在Pycharm中运行程序后,其结果是:

说明:① 此例子将匿名函数作为append()方法的一个参数,调用匿名函数依次计算出循环变量i的平方,并依次追加在列表list_1之后;

② 若用def定义的函数来实现,则需要定义一个函数,其代码量比匿名函数多。

(2)匿名函数作为函数的实参

在Pycharm中运行程序后,其结果是:

说明:① 此例子在匿名函数中定义两个数进行的运算,并将其作为实参传递给形参,从而实现两个数的所有运算,其他运算可以用相类似的方法解决;

②若此问题用def定义的函数来解决,则需要定义三个函数来实现,可以看出匿名函数比def定义的函数的代码量少。

(3)匿名函数作为内置函数的参数

例4:通过匿名函数实现对列表中元素的排序。

代码如下:

在Pycharm中运行程序后,其结果是:

说明:① 匿名函数作为sort函数中key参数所对应的值,实现对列表中元素按照指定规则进行排序,其中lambda定义的匿名函数中的参数x表示列表中的一个元素,x['name']表示每个元素按照name进行排序,同理,x[‘age’]表示每个元素按照age进行排序;

② 此问题很难用def定义的函数实现。

3 总结

本文通过介绍Python中匿名函数的定义与调用,并举例详细说明了三个方面的应用,可以看出匿名函数在解决某些问题时,更方便、更简洁、更易懂且代码量更少。

猜你喜欢
表达式调用列表
学习运用列表法
灵活选用二次函数表达式
扩列吧
灵活选用二次函数表达式
浅析C语言运算符及表达式的教学误区
系统虚拟化环境下客户机系统调用信息捕获与分析①
列表画树状图各有所长
基于属性数据的系统调用过滤方法
利用RFC技术实现SAP系统接口通信
议C语言中循环语句