summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/output/test_scope1
-rw-r--r--Lib/test/test_scope.py65
2 files changed, 66 insertions, 0 deletions
diff --git a/Lib/test/output/test_scope b/Lib/test/output/test_scope
index 0535e26..5d41e8c 100644
--- a/Lib/test/output/test_scope
+++ b/Lib/test/output/test_scope
@@ -13,3 +13,4 @@ test_scope
12. lambdas
13. UnboundLocal
14. complex definitions
+15. scope of global statements
diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py
index b4c492a..0633b14 100644
--- a/Lib/test/test_scope.py
+++ b/Lib/test/test_scope.py
@@ -318,3 +318,68 @@ def makeAddPair((a, b)):
return addPair
verify(makeAddPair((1, 2))((100, 200)) == (101,202))
+
+print "15. scope of global statements"
+# Examples posted by Samuele Pedroni to python-dev on 3/1/2001
+
+# I
+x = 7
+def f():
+ x = 1
+ def g():
+ global x
+ def i():
+ def h():
+ return x
+ return h()
+ return i()
+ return g()
+verify(f() == 7)
+verify(x == 7)
+
+# II
+x = 7
+def f():
+ x = 1
+ def g():
+ x = 2
+ def i():
+ def h():
+ return x
+ return h()
+ return i()
+ return g()
+verify(f() == 2)
+verify(x == 7)
+
+# III
+x = 7
+def f():
+ x = 1
+ def g():
+ global x
+ x = 2
+ def i():
+ def h():
+ return x
+ return h()
+ return i()
+ return g()
+verify(f() == 2)
+verify(x == 2)
+
+# IV
+x = 7
+def f():
+ x = 3
+ def g():
+ global x
+ x = 2
+ def i():
+ def h():
+ return x
+ return h()
+ return i()
+ return g()
+verify(f() == 2)
+verify(x == 2)