python-4函数式编程
2018-06-18 02:51:20来源:未知 阅读 ()
1-高阶函数
变量可以指向函数。 def add(x, y, f): 例如f参数为函数
编写高阶函数,就是让函数的参数能够接收别的函数。
Python内建了map()
和reduce()高阶
函数。
1.1 将list每项相乘
def f(x): return x*x r = map(f, [1,2,3,4,5,6,7]) list(r) #[1, 4, 9, 16, 25, 36, 49] 每个变量的平方
1.2 把int转成字符串
list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) #把int转成字符串
1.3 把str转换为int的函数:
from functools import reduce def fn(x, y): return x * 10 + y def char2num(s): digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} return digits[s] print(reduce(fn, map(char2num, '13579')))把str转换为int的函数:
1.4 filter使用
def not_empty(s): return s and s.strip() list(filter(not_empty, ['A','B ','',None,'C',' ']))
1.5 sorted使用
print(sorted([1,22,33,21,8])) #默认排序 print(sorted(['a','Z','B','c'],key=str.lower)) #按小写排序 print(sorted(['a','Z','B','c'],key=str.lower,reverse=True)) #按小写反向排序 def my_Sorted(item): return item[0] L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] sorted(L,key=my_Sorted) #自定义的排序
1.6 闭包
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() # 9 9 9 a,b,c = [1,2,3] #a=1,b=2,c=3
1.7 匿名函数 如: f= lambda x: x*x
list(map(lambda x: x*x, [1,2,3,4,5,6,7,8,9]))#[1, 4, 9, 16, 25, 36, 49, 64, 81]
1.8 装饰器 (装饰现有函数,返回一个新的函数。)
import functools def log(func): @functools.wraps(func) #相当wrapper.__name__ = func.__name__ def wrapper(*args,**kw): print("call %s():" % func.__name__); return func(*args, **kw) return wrapper @log def now(): print('2018-05-11') now() #相当 now = log(now)
带参装饰器
import functools def log1(text): def decorator(func): @functools.wraps(func) def wrapper(*args, **kw): print('%s %s:' % (text, func.__name__)) return func(*args, **kw) return wrapper return decorator @log1('exceue') def now1(): print('2018-5-5') now1() #now = log('execute')(now) #我们来剖析上面的语句,首先执行log('execute'),返回的是decorator函数, #再调用返回的函数,参数是now函数,返回值最终是wrapper函数。
1.9 偏函数(通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点)
int('10111',base=2) #结果23, 以2进行进行转换 import functools int2 = functools.partial(int, base=2)#自定义的偏函数 print(int2('10111')) #结果23,
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:mac环境搭建selenium
下一篇:python3爬虫编码问题
- 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