On Thu, Dec 22, 2011 at 4:45 PM, GZ <zyzhu2...@gmail.com> wrote: > def h(): > if condition=true: > #I would like to return an itereator with zero length > else: > for ...: yield x
Easy. Just 'return' in the conditional. >>> def h(): if condition: return for i in range(4): yield i >>> condition=False >>> h() <generator object h at 0x01913E68> >>> for i in h(): print(i) 0 1 2 3 >>> condition=True >>> h() <generator object h at 0x01079E40> >>> for i in h(): print(i) >>> A generator object is returned since the function contains a 'yield'. On one of the branches, nothing will ever be yielded and StopIteration will be raised immediately. You could probably also raise StopIteration directly, but it's not necessary. ChrisA -- http://mail.python.org/mailman/listinfo/python-list