Jan-30-2020, 06:17 AM
Jan-30-2020, 08:08 AM
As per PEP255, empty return statement is allowed in the generator function
borrowing the example from pep255
borrowing the example from pep255
def f1(): try: return except: yield 1 print('Loop over empty generator') for item in f1(): print(item) print('Loop over empty generator completed') print('call next() on empty generator') next(f1())
Output:Loop over empty generator
Loop over empty generator completed
call next() on empty generator
Traceback (most recent call last):
File "***", line **, in <module>
next(f1())
StopIteration
or without return
def empty_generator(): for item in []: yield item print('Loop over empty generator') for item in empty_generator(): print(item) print('Loop over empty generator completed') print('call next() on empty generator') next(empty_generator())
Output:Loop over empty generator
Loop over empty generator completed
call next() on empty generator
Traceback (most recent call last):
File "***", line **, in <module>
next(empty_generator())
StopIteration
Jan-30-2020, 09:51 AM
This one works too
>>> def foo(): ... if False: yield ... >>> list(foo()) [] >>>