在 Python 2.7.6 中执行
Exec in Python 2.7.6
我正在学习 2.7 上的 eval、exec 和 compile 的基础知识.6.
我在 exec 上遇到了障碍,因为在 运行 时出现错误:
exec 'print 5'
错误:
SyntaxError: unqualified exec is not allowed in function 'main' it
contains a nested function with free variables (EvalExecCompile.py,
line 61)
我发现 exec 在 2.7.6 中是一个表达式,而在 3.x 中是一个函数。问题是,我找不到一个工作示例来学习 exec in 2.7.6.
我知道使用 exec 等的所有危险,但只是想学习如何使用它们以防万一我需要它们。
有人可以帮忙吗?也许提供一个我可以剖析的工作示例?
谢谢。
我的问题的目的是学习如何在 2.7.6 中正确使用 exec。
除非指定上下文,否则不能在具有子函数的函数中使用 exec。来自文档:
If exec is used in a function and the function contains a nested block
with free variables, the compiler will raise a SyntaxError unless the
exec explicitly specifies the local namespace for the exec. (In other
words, "exec obj" would be illegal, but "exec obj in ns (namespace)" would be
legal.)
这里是实现的代码exec
:
def test2():
"""Test with a subfunction."""
exec 'print "hi from test2"' in globals(), locals()
def subfunction():
return True
test2()
这个例子取自:In Python, why doesn't exec work in a function with a subfunction?
我正在学习 2.7 上的 eval、exec 和 compile 的基础知识.6.
我在 exec 上遇到了障碍,因为在 运行 时出现错误:
exec 'print 5'
错误:
SyntaxError: unqualified exec is not allowed in function 'main' it contains a nested function with free variables (EvalExecCompile.py, line 61)
我发现 exec 在 2.7.6 中是一个表达式,而在 3.x 中是一个函数。问题是,我找不到一个工作示例来学习 exec in 2.7.6.
我知道使用 exec 等的所有危险,但只是想学习如何使用它们以防万一我需要它们。
有人可以帮忙吗?也许提供一个我可以剖析的工作示例?
谢谢。
我的问题的目的是学习如何在 2.7.6 中正确使用 exec。
除非指定上下文,否则不能在具有子函数的函数中使用 exec。来自文档:
If exec is used in a function and the function contains a nested block with free variables, the compiler will raise a SyntaxError unless the exec explicitly specifies the local namespace for the exec. (In other words, "exec obj" would be illegal, but "exec obj in ns (namespace)" would be legal.)
这里是实现的代码exec
:
def test2():
"""Test with a subfunction."""
exec 'print "hi from test2"' in globals(), locals()
def subfunction():
return True
test2()
这个例子取自:In Python, why doesn't exec work in a function with a subfunction?