生成器、

生成器是一种特殊的迭代器,可以迭代

第一种方式

# nums=[x*2forxinrange(10)]#print(nums)nums=(x*2forxinrange(10))print(nums)fornuminnums:print(num)# nums=[x*2forxinrange(10)]#print(nums)nums=(x*2forxinrange(10))print(nums)fornuminnums:print(num)把【】改成()就好了

第二种方式

看一个函数中是否有yield,如果没有的话,就是一个普通的函数;如果有的话,他就是一个生成器的模板(就是类)

如果在调用函数的时候,发现函数中有yield,此时就不是调用函数了,而是创建了一个生成器对象,所以这个时候就可以找一个变量接收他,就比如:

obj = create_num(10)

代码

defcreate_num(all_num):# a = 0# b =1a,b=0,1current_num=0whilecurrent_num<all_num:# print(a)yielda#导致函数暂停在这里,下一次会在暂停的地方#继续往下走,当所有的函数都执行完后#内部会抛出一个异常,这个函数就执行完了a,b=b,a+b        current_num+=1obj=create_num(10)fornuminobj:print(num)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容