Python-生成器

需求:造一个类型,产生无穷个值,用之前的列表、字典都不太符合

1、如何得到自定义的迭代器
#在函数内一旦存在yield关键字,调用函数并不会执行函数体代码,会返回一个生成器对象,生成器即自定义的迭代器
def func():
print("第一次")
yield 1
print("第二次")
yield 1
print("第三次")
yield 1
print("第四次")

#func()  #函数内有yield关键字,调用函数,不执行函数代码体
g=func()  #函数内有yield关键字,不会执行函数体代码,会有一个返回值
# print(g)
#<generator object func at 0x00000000005A6AC0>
 
生成器就是迭代器
# g.__iter__()
# g.__next__()

会触发函数体代码的运行,然后遇到yield停下来,将yield后的值当做本次调用的结果返回
# res=g.__next__() #第一次
# print(res) #1


2、应用案例:自定义迭代器
def func1(start,stop,step):
while start < stop:
yield start
start+=step

# g1=func1(1,5,2)
# print(next(g1))
# print(next(g1))


上面使用next进行每次迭代取值,使用for循环(for循环叫迭代器循环,生成器就是迭代器)
for i in func1(1,7,2):
print(i)
 



posted @ 2020-11-17 11:06  梁博客  阅读(95)  评论(0)    收藏  举报