第九节 生成器

def create_num(all_num):
a, b = 0, 1
current_num = 0
while current_num <= all_num:
yield a # 如果一个函数中有yield语句,那么这个就不再是一个函数,而是一个生成器模板
a, b = b, a+b
current_num += 1

'''
生成器是一种特殊的迭代器
'''
# 则在调用调用create_num时,不再是调用函数,而是在创建一个生成器模板
a = create_num(10) #不会像函数一样运行,而是生成数据的一个类,与list等比较,list是实在的数据,而create_num()是生成数据的对象
print(create_num(10))
# for x in a: #开始循环第一个,代码执行到yield语言暂停,将a取出,然后再次回到暂停的地方继续往下执行,不是create_num整个执行结束将保存的a值一次性当作一个迭代器
# print(x)

b = next(a)
print(b)
c = next(a)
print(c) # 取数原理跟用for循环一样
posted @ 2020-03-26 16:54  kog_maw  阅读(151)  评论(0编辑  收藏  举报