生成器和迭代器

#迭代器

#双下方法,很少直接调用的方法,是通过其他的语法触发的

#可迭代的--可迭代协议,含有__iter__方法(__iter__in dir数据])

#可迭代的一定可以for循环

#迭代器协议含有__next__和__iter__方法

#迭代器一定是可迭代的,可迭代的调用__iter__方法就可以得到一个迭代器

#迭代器的特点

  1.很方便,并且所有的数据只能取一次

  2.节省内存空间

#生成器--本质就是迭代器

#生成器的表现形式,

  1生成器表达式

  2生成器函数  

    *含有yield的函数就是生成器函数

    *特点

      1调用函数是函数不执行,返回一个生成器

      2调用__next__方法会取到一个值,直到取完会报错

又一个文件,从文件里分段读取内容

#readline

#read(10)

#在读出来的内容前加***,再返回给调用者

def generation():

  for i in range(1000)

    yield "fewffewf"

g=genneration()#调用生成器函数,得到一个生成器

g.__next__()#从生成器里面取内容,预示着代码继续执行

number=0

list

for i in g:

  i+=1

  if number>50

  break

  print(i)

#从生成器里面取值的方法

  1.for循环

  2 通过__next__

  3 通过强转print(list(g)不过太占内存了

def genertor():

  print(1)

  yield "a"

  print(2)

  yield "a"

ret=genertor()

print(ret.__next__())

print(ret)

print(ret.__next__())

print(ret)

  

  

原文地址:https://www.cnblogs.com/648071634com/p/11661551.html