Python之生成器

1.Python的生成器是一种特殊的迭代器

复制代码
 1 def create_generator(all_num):
 2     a, b = 0, 1
 3     ind = 0
 4     while ind < all_num:
 5         yield a  # 程序执行到此处等待取值函数不会出栈, yield返回一个生成器模板类似Python class
 6         a, b = b, a+b
 7         ind += 1
 8 
 9 
10 gen_obj = create_generator(10)
11 for num in gen_obj:
12     print(num)
13 
14 gen_obj1 = create_generator(20)
15 
16 print('-'*50)
17 
18 while True:
19     try:
20         print(next(gen_obj1))
21     except StopIteration:
22         print('迭代完成')
23         break
24 
25 print('*'*50)
26 print(gen_obj)
27 print(dir(gen_obj))
复制代码

  程序输出:

复制代码
 1 0
 2 1
 3 1
 4 2
 5 3
 6 5
 7 8
 8 13
 9 21
10 34
11 --------------------------------------------------
12 0
13 1
14 1
15 2
16 3
17 5
18 8
19 13
20 21
21 34
22 55
23 89
24 144
25 233
26 377
27 610
28 987
29 1597
30 2584
31 4181
32 迭代完成
33 **************************************************
34 <generator object create_generator at 0x7f134931c360>
35 ['__class__', '__del__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__next__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'gi_code', 'gi_frame', 'gi_running', 'gi_yieldfrom', 'send', 'throw']
36 
37 Process finished with exit code 0
View Code
复制代码

 2.生成器中的send的方法,send也可以和next一样启动生成器并且可以传入一个值给生成器

   1) 生成器可以选择通过这个传入值可以改变生成器的行为.

posted @   非法关键字  阅读(226)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示