python为了方便我们的开发,为我们准备了许多的内置函数,具体可参考python的官方文档:

http://docs.python.org/3/library/functions.html

接下来我对其中一部分函数做出详解

eval

在工作中可能会出现需要将一串字符串格式的计算公式解析,然后进行计算,而eval就是可以将字符串转换成可执行代码,然后执行,用代码解释就是如下:

x = eval("1+2*3/(4-5)")就等同于

x = 1+2*3/(4-5)

而eval的功能远不如此,eval的字符串参数内还可以包含变量和调用方法,如:

输出结果为:

 

所以我们可以认为,只要是 x = str 可以执行的代码,就可以使用 x = eval("str"),并且两者返回的值一致

map

map函数可以理解为一个转换器,将一个列表(并非只是list)按一定的逻辑将列表的每个值进行转换(实际上map返回的是个Iterator),使用list()方法后,可以转换成一个新的list

map的使用时传入一个函数和一个列表,使用方式如下:

输出结果为:

map函数将data中的每个元素都当做参数调用map_num函数,并用每一个返回值组成一个新的列表

lambda表达式

对于上面的代码,可以使用lambda关键字简化代码,简化后的代码如下:

输出结果为:

用lambda关键字表示的函数被称为匿名函数,函数分为两个部分 lambda后面是形参,“:”后面跟的是返回值,匿名函数能定义的函数有限,但是极大的简化了我们的代码

filter

filter被称为过滤器,与map用法一致,判断列表中的每一个值是否满足一定的条件,只保留满足条件的值,其中,python中所有的“0”都表示False,如0,0.00,None,"",[],{}

filter使用方式如下:

输出结果为:

我们使用lambda表达式筛选出所有的奇数:

输出结果为:

reduce

与以上函数类似的函数还有functools模块中的reduce函数,但是reduce传入的函数必须是需要两个参数的函数,作用是将函数的结果与序列的下一个元素做累计计算,如计算一个序列的和:

输出结果为:

还可以举一个稍微复杂的例子,将一个数字字符串转换成float类型:

输出结果为:

以上函数中,除了eval函数外的其余函数,接受另一个函数作为参数,这样的函数在python中被称为高阶函数。