In Python 3.3+, you can use yield from . For instance,
>>> def get_squares(): ... yield from (num ** 2 for num in range(10)) ... >>> list(get_squares()) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
It can be used with any iterable. For instance,
>>> def get_numbers(): ... yield from range(10) ... >>> list(get_numbers()) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> def get_squares(): ... yield from [num ** 2 for num in range(10)] ... >>> list(get_squares()) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Unfortunately, Python 2.7 does not have an equivalent construct: '(