python高阶函数

python高阶函数


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


内置高阶函数

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



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


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



  • sorted函数
• python内置的 sorted() 函数就可以对 list 进行排序;
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
• 排序也是在程序中经常用到的算法。 无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。通常规定如下:
x < y, return -1
x == y, return 0
x > y, return 1
 

  • 函数作为返回值
闭包(closure)

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


f = lazy_sum(1,2,3,4)
#调用 lazy_sum() 时,返回的并不是求和结果,而是求和函数。f 实质是 lazy_sum 的返回值, f 实质上是一个函数名
f()
#调用函数 f 时,才真正计算求和的结果
  • 匿名函数
•当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
•关键字 lambda 表示匿名函数,冒号前面的 x 表示函数参数

• 匿名函数有只能有一个表达式,不用写 return ,返回值就是该表达式的结果。
• 因为匿名函数没有名字,不必担心函数名冲突。 此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数;

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

  • 装饰器
•装饰器就是用来装饰函数
• 想要增强原有函数的功能
• 但不希望修改now()函数的定义
• 在代码运行期间动态增加功能的方式
•定义的装饰器实质是返回函数的高阶函数
装饰器的功能,比如:权限的验证,日志记录, 函数运行时间统计, 执行函数前预备处理, 执行函数后清理
功能等;

 

     @addInfo    # 这里是 python 提供的一个语法糖

被装饰的函数有参数

必选参数
默认参数
可变参数(注意: 尽量使用,通用性比较强)
关键字参数



装饰器带参数







www

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值