您的位置:首页 > 编程语言 > Python开发

python 高阶函数

2017-07-14 12:19 204 查看
########高阶函数########

1.函数

函数本身也可以赋值给变量,即:变量可以指向函数。



函数名其实就是指向函数的变量!



上述操作发现:abs为函数名,给abs=1重新赋值后,abs已不是函数,而是一个整数。

2.高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。



3.map函数

map() 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 list 返回。



map() 作为高阶函数,把运算规则抽象了.

练习: 把这list列表中的所有数字转为字符串;([1,2,3]---['1','2','3'])



4.reduce函数

reduce 把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce 把结果继续和序列的下一个元素做累积计算。



综合编程:写出把 str 转换为 int 的函数(eg:'12345'--12345)



5.map/reduce练习题

•利用 map() 函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入: ['adam', 'LISA', 'barT'] ,输出: ['Adam', 'Lisa','Bart'] 。



•Python 提供的 sum() 函数可以接受一个 list 并求和,请编写一个 prod()函数,可以接受一个 list 并利用 reduce() 求积。



6.filter函数

filter() 也接收一个函数和一个序列。和 map() 不同的时,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True还是 False 决定保留还是丢弃该元素。

在一个 list 中,删掉偶数,只保留奇数:



7.sorted函数

• 排序也是在程序中经常用到的算法。 无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。通常规定如下:

x < y, return -1

x == y, return 0

x > y, return 1

• python内置的 sorted() 函数就可以对 list 进行排序;

• 如果要倒序排序呢?

• 如果要对字符串进行排序呢?



高阶函数的抽象能力非常强大,而且核心代码可以保持得非常简洁。

8.函数作为返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。



调用 lazy_sum() 时,每次调用都会返回一个新的函数,即使传入相同的参数



9.匿名函数

•当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

•关键字 lambda 表示匿名函数,冒号前面的 x 表示函数参数



• 匿名函数有只能有一个表达式,不用写 return ,返回值就是该表达式的结果。

• 因为匿名函数没有名字,不必担心函数名冲突。 此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数;



匿名函数传递必选参数和默认参数



匿名函数传递可变参数



匿名函数传递关键字参数



• 也可以把匿名函数作为返回值返回



10.装饰器

• 装饰器就是用来装饰函数。

• 想要增强原有函数的功能;

• 但不希望修改now()函数的定义;

• 在代码运行期间动态增加功能的方式;

• 定义的装饰器实质是返回函数的高阶函数。(试试下面的装饰器)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: