python generator

  
  
  
  
  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

 

你可能感兴趣的:(python,generator)