问题
I want to write a Python generator function that never actually yields anything. Basically it's a "do-nothing" drop-in that can be used by other code which expects to call a generator (but doesn't always need results from it). So far I have this:
def empty_generator():
# ... do some stuff, but don't yield anything
if False:
yield
Now, this works OK, but I'm wondering if there's a more expressive way to say the same thing, that is, declare a function to be a generator even if it never yields any value. The trick I've employed above is to show Python a yield statement inside my function, even though it is unreachable.
回答1:
Another way is
def empty_generator():
return
yield
Not really "more expressive", but shorter. :)
Note that iter([])
or simply []
will do as well.
回答2:
An even shorter solution:
def empty_generator():
yield from []
回答3:
Edit:
This doesn't work- read comments
can't you just yield None
? Seems like it would be easier to read to me.
来源:https://stackoverflow.com/questions/6266561/how-to-write-python-generator-function-that-never-yields-anything