Python:yeildの使用理解

963 ワード

現在、インターネットで見つけたyeildについて最も理解しやすい解釈は、非常に分かりやすいように書かれています.https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
yeildは実は反復ジェネレータであり、他の愚かな方法に比べてメモリスペースを節約することが最大の利点です.
yeildクラスの実装方法について
クラスの実装方法では,1つの反復器の関数iterを実装する.
class Fab(object): 
 
   def __init__(self, max): 
       self.max = max 
       self.n, self.a, self.b = 0, 0, 1 
 
   def __iter__(self): 
       return self 
 
   def next(self): 
       if self.n < self.max: 
           r = self.b 
           self.a, self.b = self.b, self.a + self.b 
           self.n = self.n + 1 
           return r 
       raise StopIteration()

呼び出し方法:
for n in Fab(5): 
   print n 

yeildの等価法(より簡潔な方法)
def fab(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        yield b 
        # print b 
        a, b = b, a + b 
        n = n + 1 

呼び出し方法
for n in fab(5): 
   print n