生成器迭代器

Posted heheda123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器迭代器相关的知识,希望对你有一定的参考价值。

函数名  →  第一类对象

函数可以复制

函数可以作为集合类的元素

函数可以作为参数传递

函数可以作为返回值返回

2,闭包

语法: 内层使用外层函数的变量

def wrapper():

  name = "周杰伦"

  def inner():

    print(name)

  return inner

ret = wrapper()

ret()

如何查看一个函数是否是闭包

函数名.__closure__有值就是闭包,none就不是闭包

优点:

1.保护变量不被侵害

2.可以让一个变量常驻内存

 

迭代器

在数据中包含了__iter__是一个可迭代对象

for循坏机制

it= lst.__iter__()

while 1:

  try:

    it__next__()

  except   StopIteration:

    break

优点:

  1,节省内存

  2.,惰性机制

  3,只能向前,不能反复

官方查看xxx是迭代器,可迭代对象

from collections import iterable iterator

isinstance(对象,iterable)

isinstance(对象,iterator)

迭代器一定是可迭代的

可迭代的不一定是迭代器

 

生成器

 

  生成器函数中包含yield:返回数据和return差不多

  return会立即结束这个函数的执行

  yield可以分段的执行一个函数

  生成器函数在执行的时候返回生成器,而不是直接执行

能向下执行的两个条件

  __next__() 执行到下一个yield

  send(),执行到下一个yield 给上一个yield传值

 

所有的生成器都是迭代器都可以直接使用for循环

都可以使用list()函数来获取到生成器内所有的数据

 

生成器中记录的是代码而不是函数的执行

def func():

  print("我的天那")

  yield

gen = func()  创建生成器,此时运行会把生成器函数中的代码记录在内存中

当执行到__next__() 运行此空间中的代码运行到yield结束

优点:节省内存,生成器本身就是代码,几乎不占用内存

特点:惰性机制,只能向前,不能反复

 

以上是关于生成器迭代器的主要内容,如果未能解决你的问题,请参考以下文章

迭代器和生成器

迭代器/可迭代对象/生成器

迭代器,可迭代对象,迭代器对象和生成器

迭代器&迭代对象&生成器

python——迭代器生成器装饰器

迭代器,生成器