python generator

发布时间:2019-08-27 07:59:46编辑:auto阅读(1598)

    1. >>> lst_num = [1,2,3] 
    2. >>> iter = (i for i in lst_num) 
    3. >>> print iter.next 
    4. <method-wrapper 'next' of generator object at 0xb71566e4> 
    5. >>> print iter.next() 
    6. >>> print iter.next() 
    7. >>> print iter.next() 
    8. >>> print iter.next() 
    9. Traceback (most recent call last): 
    10.   File "<stdin>", line 1, in <module> 
    11. StopIteration 

     

    1. >>> def use_yield(): 
    2. ...    for i in range(10): 
    3. ...      yield(i) 
    4. ...  
    5. >>>  
    6. >>> iter = use_yield() 
    7. >>> iter.next() 
    8. >>> iter.next() 
    9. >>> iter.next() 

     

    1. >>> def use_send(): 
    2. ...   print 'how are you?', 
    3. ...   m = yield('55555') 
    4. ...   print m 
    5. ...   n = yield('aaaaaaaaaaa') 
    6. ...   print 'ok!' 
    7. ...  
    8. >>> test = use_send() 
    9. >>> test.send(None) 
    10. how are you? 
    11. '55555' 
    12. >>> test.next() 
    13. None 
    14. 'aaaaaaaaaaa' 
    15. >>> test.next() 
    16. ok! 
    17. Traceback (most recent call last): 
    18.   File "<stdin>", line 1, in <module> 
    19. StopIteration 
    20. >>> test = use_send() 
    21. >>> test.next() 
    22. how are you? 
    23. '55555' 
    24. >>> test.send('fine,3Q.') 
    25. fine,3Q. 
    26. 'aaaaaaaaaaa' 

    第一个例子是告诉怎么输出generator对象

    第2个是使用 yield 产生generator对象

    第3个例子涉及到generatorde 原理,

    1. m = yield('55555')  
    2. 相当于下面伪代码
    3. print(‘55555’)       //输出55555
      m = wait_and get()   //等待输入,并把值返给m,另外告诉next() = send(None)

    详细解释参考http://blog.donews.com/limodou/archive/2006/09/04/1028747.aspx

     

关键字