生成器迭代器
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结束
优点:节省内存,生成器本身就是代码,几乎不占用内存
特点:惰性机制,只能向前,不能反复
以上是关于生成器迭代器的主要内容,如果未能解决你的问题,请参考以下文章