Python之生成器

Posted 非法关键字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) 生成器可以选择通过这个传入值可以改变生成器的行为.

以上是关于Python之生成器的主要内容,如果未能解决你的问题,请参考以下文章

Python之如何优雅的重试

python之模块和包

python之模块和包

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段

python调试之pdb调试工具