You can put an extra 'level' in, to make both options return the same 0,1...9
def loop():
for number in range(10):
def outer(n):
def inner():
return n
return inner
yield outer(number)
Is there a neater way?