| 1234567891011121314151617181920212223242526272829303132 |
- # a generator that closes over outer variables
- def f():
- x = 1 # closed over by g
- def g():
- yield x
- yield x + 1
- return g()
- for i in f():
- print(i)
- # a generator that has its variables closed over
- def f():
- x = 1 # closed over by g
- def g():
- return x + 1
- yield g()
- x = 2
- yield g()
- for i in f():
- print(i)
- # using comprehensions, the inner generator closes over y
- generator_of_generators = (((x, y) for x in range(2)) for y in range(3))
- for i in generator_of_generators:
- for j in i:
- print(j)
- # test that printing of closed-over generators doesn't lead to segfaults
- def genc():
- foo = 1
- repr(lambda: (yield foo))
- genc()
|