python-高阶函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-高阶函数相关的知识,希望对你有一定的参考价值。
*************************高阶特性********************
一、*)变量可以指向函数
在python中函数名实质上是指向函数体的内容;
函数本身也可以赋值给变量,即:变量可以指向函数。
In [2]: max(12,23)
Out[2]: 23
In [3]: lh = max #函数名其实就是指向函数的变量!
二、*)高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另
一个函数作为参数,这种函数就称之为高阶函数。
三、*)内置高阶函数
map函数
寻找帮助: help(map)
map(...)
map(function, sequence[, sequence, ...]) -> list
map() 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依
次作用到序列的每个元素,并把结果作为新的 list 返回。
练习: 把这list列表中的所有数字转为字符串;([1,2,3]---['1','2','3'])
练习:In [30]: l = '1 2 3 5' 转为整数
2.reduce函数
寻找帮助 help(reduce)
reduce(...)
reduce(function, sequence[, initial]) -> value
eg:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5).
对于序列中的每个元素迭代调用function函数;
reduce 把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接
收两个参数,reduce 把结果继续和序列的下一个元素做累积计算。
3.filter函数
filter(...)
filter(function or None, sequence) -> list, tuple, or string
注意:function函数返回值为bool类型
filter() 也接收一个函数和一个序列。和 map() 不同的时,
filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True
还是 False 决定保留还是丢弃该元素。
练习: 把一个序列中的空字符串删请尝试用 filter() ;
练习:
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
4.sorted函数
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
迭代对象 函数 (逆序)
cmp=用于比较的参数,返回值一定和cmp函数的返回值对应(1 -1 0);
sorted返回一个新的对象,可以对任意可迭代的对象进行排序;
li.sort()作用于列表本身;只能用于列表排序;
? 排序也是在程序中经常用到的算法。 无论使用冒泡排序还是快速
排序,排序的核心是比较两个元素的大小。
--逆序排序
--忽略大小写
四、*)匿名函数
lambda 参数名:函数返回值
参数名:支持可变参数,**kwargs.....
?当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
?关键字 lambda 表示匿名函数,冒号前面的 x 表示函数参数
练习:找出货物中价格最低的货物和数量最多货物。
五、闭包
六、*)装饰器
?装饰器就是用来装饰函数。
? 想要增强原有函数的功能;
? 但不希望修改now()函数的定义;
? 在代码运行期间动态增加功能的方式;
练习:
ATM
2.*记时器
3.万能记时器
练习:
编写Logger装饰器,实现被装饰的函数运行结束后,打印日志信息;
要求:
日志格式内容:时间 函数名 运行使用时间[x]
被装饰的函数可以接受任意个参数;
装饰器可以传参数,并将装饰器的参数打印出来;显示为‘装饰器所传参数为:xxx’
以上是关于python-高阶函数的主要内容,如果未能解决你的问题,请参考以下文章