Python is confusing
>>> def simple(): yield 'a' ... >>> ', '.join(simple()) 'a' >>> def horrible(): ... if ' ' not in False: yield 'a' ... >>> ', '.join(horrible()) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: sequence expected, generator found >>>
But it does accept generators!
(Yes, I know what triggers it to say that. It's still horribly misleading.)