函数式编程
2018-06-18 02:06:53来源:未知 阅读 ()
函数式 = 编程语言定义的函数 + 数学意义的函数
1.不可变:不用变量保存状态,不修改变量
eg
def test(): return n+1
2.第一类对象:函数即“变量”
eg:
def text(n) : print(n) def test(name) print(name) text(test(sumcet))
第一步执行test(smcet),调用test函数,打印sumcet,由于test函数没有返回值,所以返回值为None,最后将得到的结果传给text函数
相当于将test()当作变量一样在处理最后打印结果为
sumcet None
高阶函数
a.把函数当作参数传给另一个函数
b.返回值中包含参数
上面的text函数就是高阶函数
3.尾调用
在函数的最后一步调用另一个函数,最后一行不一定是函数的最后一步,
例如带有判断语句的函数
4.map函数
map()是python内置的高阶函数,他接收一个函数和一个列表,并通过这个函数依次作用在列表的每个元素上,在python2中他将返回一个新列表,python3中得到的是迭代器。
eg:
s = [1, 2, 3, 4, 5] def reduce(li1): return li1 - 1#减操作 def add(li2): return li2 + 1#加操作 def invo(li3): return li3 * li3#幂运算 #map函数的内部实现 def map_ex(func, li): b = [] for a in s: b.append(func(a)) return b print(map_ex(add, s))#map_ex(add,s)将获取add函数的地址 print(map_ex(reduce, s)) print(map_ex(invo, s)) print('********************') #利用map函数实现同样功能。 print(list(map(lambda x: x + 1, s)))#lambda匿名函数,s必须是可迭代对象,与上面结果进行对比 print(list(map(lambda x: x - 1, s))) print(list(map(lambda x: x * x, s)))
输出
[2, 3, 4, 5, 6] [0, 1, 2, 3, 4] [1, 4, 9, 16, 25] ******************** [2, 3, 4, 5, 6] [0, 1, 2, 3, 4] [1, 4, 9, 16, 25]
map()函数可以做很多
eg 调用有名函数
name = ['bbu', 'sumcet', 'loVe'] def eng(s): s1 = s[0:1].upper() + s[1:].lower() return s1 print(list(map(eng, name)))
输出
['Bbu', 'Sumcet', 'Love']
5.filter函数
filter(函数名,序列类型)
遍历序列中的每个元素,判断得到的布尔值,如果是True则保留
eg:
s = ['a_bbu', 'b_bbu', 'c_bbu'] a = filter(lambda x: x.startswith('b'), s) print(list(a))
输出
['b_bbu']
6.reduce函数
reduce(函数名,序列类型,初始值)初始值默认为None
在python3中使用reduce函数要导入functools库,python2不需要
处理一个序列类型,然后把序列进行合并操作
eg:
from functools import reduce s = [1, 2, 3, 4, 5, 6] a = reduce(lambda x, y: x * y, s, 1) print(a)
输出
720
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- 网络编程相关知识点 2019-08-13
- python 之 并发编程(线程理论,开启线程的两种方式,进程 2019-07-24
- 编程小白的第一本python入门书(高清版)PDF下载 2019-07-24
- python 之 并发编程(生产者消费者模型、守护进程的应用) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash