码迷,mamicode.com
首页 > 其他好文 > 详细

day13 生成器 迭代器

时间:2018-06-19 13:58:53      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:sharp   sha   turn   pre   检查   iter   nbsp   div   for   

一 迭代器 

可以使用dir(函数来检查类的内部定义的函数

特点:

__iter__() 获取迭代器

__next__(获取最前面这个元素

s="123"
for  c  in s :
    print(c)  
使用dir()来查看函数
ret=dir(str) #字符串中有__ iter__()获取迭代器
print(ret)
我们通过__iter__()来获取到迭代器
s="我昨天去天安门了"
it=s.__iter__()  #获取到迭代器,吧子弹装弹夹中
print(it.__next__()) 
print(it.__next__()) 
print(it.__next__()) 
print(it.__next__()) 
print(it.__next__()) 
print(it.__next__()) #最后一个元素 继续__next__()会报错

  

二 生成器(初识)

本质就是迭代器

函数中如果出现了yield,这个函数是生成器函数

这个时候执行函数,获取到生成器

使用__next__执行到send()之前执行__next__()

生成器的有点:

节省内存  

def func():
    print("111")
    return 222 # return 结束一个函数
ret=func()
print(ret)
def func():
    print("111")
    yield 222 #如果函数中有yield这个函数是一个生成器函数
    print("333")
    yield 444
gen=func()
ret=gen.__next__() #打印111 执行这个函数
print(ret)  #打印 111  222 
ret2=gen.__next__()  #打印 333 
print(ret2) #111 222 333 444
# .__next__是一个一个执行的

  

 

day13 生成器 迭代器

标签:sharp   sha   turn   pre   检查   iter   nbsp   div   for   

原文地址:https://www.cnblogs.com/daien522556/p/9197823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!