According to answer to this question, yield break in C# is equivalent to return in Python. In the normal case, return indeed stops a generator. But if your function does nothing but return, you will get a None not an empty iterator, which is returned by yield break in C#
def generate_nothing():
return
for i in generate_nothing():
print i
You will get a TypeError: 'NoneType' object is not iterable,
but if I add and never run yield before return, this function returns what I expect.
def generate_nothing():
if False: yield None
return
It works, but seems weird. Do you have a better idea?