Ищите хорошее объяснение, почему этот код вызывает SyntaxError
.Любое объяснение поведения exec?
def echo(x):
return x
def foo(s):
d = {}
exec(s, {}, d)
return dict((x,y) for x,y in d.items())
def bar(s):
d = {}
exec(s, {}, d)
return dict((x, echo(y)) for x,y in d.items()) # comment this to compile
s = 'a=1'
foo(s)
File "test.py", line 11
exec(s, {}, d)
SyntaxError: unqualified exec is not allowed in function 'bar' it contains a
nested function with free variables
Что же это должно делать? –
@ DanielRoseman: Фактический вопрос выглядит следующим образом: Почему 'foo()' действительный Python, в то время как 'bar()' is not? На мой взгляд, очень правильный вопрос, хотя его следует изложить немного яснее. –
@ DanielRoseman: D Этот код предназначен только для объяснения. Реальный код - гораздо более приемлемая версия. Я просто искал объяснения exec. – Shekhar