summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/generator-closure.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/generator-closure.py')
-rw-r--r--tests/basics/generator-closure.py26
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)