PythonNewFunction의 하나. 각종 프로그래밍에 유용하게 활용될 수 있다. 함수가 return만 한다는 편견을 버려. yield도 한다고...

FibonacciNumber 계산예제 : FibonacciNumber.py

BinaryTree 깊이우선탐색

   1 class Tree: 
   2     def __init__(self, value=None, left=None, right=None): 
   3         self.value = value 
   4         self.left = left 
   5         self.right = right 
   6  
   7 def inorder(t): 
   8     if t: 
   9         for x in inorder(t.left): 
  10             yield x 
  11         yield t.value 
  12         for x in inorder(t.right): 
  13             yield x 
  14  
  15  
  16 root = Tree('root') 
  17 root.left = Tree('left') 
  18 root.right = Tree('right') 
  19 root.left.left = Tree('left-left') 
  20 root.left.right = Tree('left-right') 
  21  
  22 for value in inorder(root): 
  23     print value 

Generator가 필요한곳

다음의 ini file Parsing예제는 앞으로 특히 나에게 많이 활용될것으로 보여진다. (출처) 눈여겨 볼 필요가 있다.

   1 def iniread(f):
   2     label, val = '', {}
   3     for l in open(f):
   4         if l.startswith('['):
   5             if val:
   6                 yield label, val
   7             label = l.strip()[1:-1]
   8             val = {}
   9         elif '=' in l:
  10             k, v = l.strip().split('=')
  11             val[k] = v
  12     if label:
  13         yield label, val
  14 
  15 import pprint
  16 for key, values in iniread('file1'):
  17     print '[%s]' % key
  18     pprint.pprint(values)

ini파일예제

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect

Permutation계산에도 이용

본 기능과, list comprehension 기능이 합체하면서, GeneratorExpression 구문이 탄생하다.

관련정보

Generator (last edited 2013-04-12 08:20:29 by 61)