博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器,迭代器,生成器
阅读量:5094 次
发布时间:2019-06-13

本文共 797 字,大约阅读时间需要 2 分钟。

1,装饰器函数

import time

def timer(func):
def inner():
start = time.time()
func()
print(time.time() - start)
return inner

@timer #==> func1 = timer(func1)

def func1():
print('in func1')

func1()

装饰器——语法糖

简单的总结一下:

  装饰器的本质:一个闭包函数

  装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展

2,可迭代对象: 

拥有__iter__方法

  特点:惰性运算

  例如:range(),str,list,tuple,dict,set

3,迭代器Iterator:

  拥有__iter__方法和__next__方法

  例如:iter(range()),iter(str),iter(list),iter(tuple),iter(dict),iter(set),reversed(list_o),map(func,list_o),filter(func,list_o),file_o

生成器Generator:

  本质:迭代器,所以拥有__iter__方法和__next__方法

  特点:惰性运算,开发者自定义

使用生成器的优点:

  1.延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用。

     2.提高代码可读性

#列表解析sum([i for i in range(100000000)])#内存占用大,机器容易卡死 #生成器表达式sum(i for i in range(100000000))#几乎不占内存

转载于:https://www.cnblogs.com/l-jie-n/p/9582366.html

你可能感兴趣的文章
oracle 11g 导出数据库时,出现空表无法导出问题解决
查看>>
WPF动画设置1(转)
查看>>
backgound-attachment属性学习
查看>>
个人作业——关于K米的产品案例分析
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
素数判断BFS之“Prime Path”
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
timeit模块
查看>>
xss跨站攻击
查看>>
poj 1191 棋盘分割
查看>>
css的一些知识
查看>>
linux常用命令(二)
查看>>
h2database源码浅析:事务、两阶段提交
查看>>
【前端】CSS隐藏元素的方法和区别
查看>>
阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访
查看>>
python中两种方法实现二分法查找,细致分析二分法查找算法
查看>>