diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-09 19:01:45 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-09 19:01:45 +0100 |
commit | 13d6739cc7a538023d8a6a648d2907b4730d7132 (patch) | |
tree | c802086515ff035b6cd213a3957664a82f5860c1 /tests/basics | |
parent | 2bf7c092225645d8c5b15e536afdce39e3593e42 (diff) | |
download | micropython-13d6739cc7a538023d8a6a648d2907b4730d7132.tar.gz micropython-13d6739cc7a538023d8a6a648d2907b4730d7132.zip |
py: Generators can have their locals closed over.
Diffstat (limited to 'tests/basics')
-rw-r--r-- | tests/basics/generator-closure.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/basics/generator-closure.py b/tests/basics/generator-closure.py new file mode 100644 index 0000000000..d8a517edeb --- /dev/null +++ b/tests/basics/generator-closure.py @@ -0,0 +1,26 @@ +# 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) |