在 Python 2.7.6 中执行

Exec in Python 2.7.6

我正在学习 2.7 上的 evalexeccompile 的基础知识.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?