python 高阶函数

高阶函数

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

map函数

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

 

reduce函数

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


filter():filter函数接受函数参数f和列表参数lst,f对lst元素进行判断,返回lst的元素中调用f函数结果为true的元素组成的列表(将不满足f函数条件的元素过滤掉):

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



sorted函数
• 排序也是在程序中经常用到的算法。 无论使用冒泡排序还是快速
排序,排序的核心是比较两个元素的大小。通常规定如下:
x < y, return -1
x == y, return 0
x > y, return 1

相反定义返回值相反:



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

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



   匿名函数 
#[1,2,3...10]
# [1,4,9,....100]
# 匿名函数的优势:
#   1). 匿名函数不需要函数名,可以避免函数名的冲突;
#   2). 匿名函数可以跳过给函数分配栈空间;



def pow1(x):
    return x*x
print map(pow1,range(1,11))

print map(lambda x:x*x, range(1,11))


# 匿名函数可以赋值给一个变量,需要运行时,变量名()
f = lambda :1
print f()


# 匿名函数传递必选参数和默认参数
f = lambda x,y=2:x**y
print f(2,3)
print f(2)

# 匿名函数传递可变参数
f = lambda *x:map(lambda x:x+x,x)
print f(1,2,3,4)

# 匿名函数传递关键字参数
f = lambda  **kwargs:kwargs.items()
print f(name="fentiao",age=5)

#练习:利用匿名函数和字典重新编辑计算器的代码。

装饰器:用来装饰函数的一个函数

添加功能,装饰函数;
#   1). 不修改函数的源代码;
#   2). 函数的调用方式没有改变



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值