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

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

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的。

list=[1,2,3,4]>>> it = iter(list)    # 创建迭代器对象>>> print (next(it))   # 输出迭代器的下一个元素1>>> print (next(it))2>>>

 

生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

def fib(max):    n=0    a=0    b=1    while max>n:       yield b       a,b=b,a+b       n=n+1f=fib(10)for i in f:    print(i)

 

装饰器

装饰器: 本质是函数, 用于装饰其他函数, 附加一些本身所没有的功能

原则:1.不能修改被装饰的函数的源代码

           2.不能修改被装饰的函数的调用方式

import timedef bar():    time.sleep(3)    print('in the bar')def test1(func):    start_time=time.time()    func()    #run bar    stop_time=time.time()    print("the func run time is %s" %(stop_time-start_time))test1(bar)bar()

 

转载于:https://www.cnblogs.com/hiss/p/8450636.html

你可能感兴趣的文章
ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放
查看>>
nginx 直接在配置文章中设置日志分割
查看>>
(算法)二叉树中两个结点的最近公共父结点
查看>>
Android实例-监测网络状态及一些事件(XE8+小米2)
查看>>
HDU 4686 Arc of Dream(递归矩阵加速)
查看>>
Apache 配置 Basic 认证
查看>>
使用 XML 实现 REST 式的 SOA
查看>>
SQL Server 日志收缩
查看>>
High accuracy voltage regulator
查看>>
directory not found for option
查看>>
【转载】菜鸟Ubuntu下安装Android Studio
查看>>
三阶魔方中心块调整配方和记忆方法
查看>>
Android Studio 快捷键整理分享
查看>>
Android Studio安装、配置
查看>>
SAP FI 财务模块 关键用户 考试练习 问卷
查看>>
Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)
查看>>
PIC24FJ64GB002 with bluetooth USB dongle
查看>>
C# ZPL II 命令打印标签
查看>>
代码面试之广义表
查看>>
hdu1754 I hate it线段树模板 区间最值查询
查看>>