pythonfor-loopgenerator

Python - Generator case where nothing to return


I have a generator like so:

def iterate_my_objects_if_something(self):
    for x in self.my_objects:
        if x.something:
            yield x

Which I call like so:

for x in self.iterate_my_objects_if_something():
    pass

In the case where there is nothing to return, this tries to iterate over NoneType and throws an exception.

How do I return an empty generator instead?


Solution

  • Just do a simple check:

    def iterate_my_objects_if_something(self):
        if self.my_objects:
            for x in self.my_objects:
                if x.something:
                    yield x