We can write generators in Python like the following:
def infinite_sequence():
x = 0
while True:
yield x
x += 1The result generator object can be repeatedly invoked with .next() to get the next value:
seq = infinite_sequence()
next(seq) # 0
next(seq) # 1
next(seq) # 2Python generator are iterables, so we can do something like this:
for i in infinite_sequence():
print(i)
# Note that this loop will not terminate since the generator above is infiniteGenerator Expressions
Python has a shorthand syntax for producing generators. The syntax is very similar to list comprehension, though it uses paranthesis:
generator = (x ** 2 for x in range(10)) The generator expression doesn’t seems to be able to express “infinite” generators.