[issue21591] "exec(a, b, c)" not the same as "exec a in b, c" in nested functions
Robert Jordens
report at bugs.python.org
Wed May 28 10:47:59 CEST 2014
New submission from Robert Jordens:
According to the documentation the "exec a in b, c" is equivalent to "exec(a, b, c)". But in the testcase below the tuple form causes a SyntaxError while the statement form works fine.
diff -r e770d8c4291c Lib/test/test_compile.py
--- a/Lib/test/test_compile.py Tue May 27 03:30:44 2014 -0400
+++ b/Lib/test/test_compile.py Wed May 28 02:45:31 2014 -0600
@@ -90,6 +90,22 @@
with self.assertRaises(TypeError):
exec("a = b + 1", g, l) in g, l
+ def test_nested_qualified_exec(self):
+ # Can use qualified exec in nested functions.
+ code = ["""
+def g():
+ def f():
+ if True:
+ exec "" in {}, {}
+ """, """
+def g():
+ def f():
+ if True:
+ exec("", {}, {})
+ """]
+ for c in code:
+ compile(c, "<code>", "exec")
+
def test_exec_with_general_mapping_for_locals(self):
class M:
SyntaxError: unqualified exec is not allowed in function 'f' it is a nested function (<code>, line 5)
----------
components: Interpreter Core
messages: 219259
nosy: Robert.Jordens
priority: normal
severity: normal
status: open
title: "exec(a, b, c)" not the same as "exec a in b, c" in nested functions
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21591>
_______________________________________
More information about the Python-bugs-list
mailing list