如何将值发送到 exec 的 运行 代码

How to send a value to exec's running code

第一个,我有两个类这样的:

class A(object):
    def foo(self, context):
        print(context)

class B(object):
    def foo(self, context):
        print(context)

注意这里的 context 变量。

其次,我想在exec中这样调用A和B:

body = """
a = A()
a.foo()
b = B()
b.foo()
"""
exec(body)

我还有一些其他 类 使用 context

这意味着我不希望 context 变量出现在 body 代码中。它是在其他地方生成的。我想通过exec或其他方式发送。

那我该怎么做呢?

您可以将 context 设为全局变量:

class A(object):
    def foo(self):
        print(context)

class B(object):
    def foo(self):
        print(context)

body = """
a = A()
a.foo()
b = B()
b.foo()
"""
context = 'foobar'
exec(body)

这输出:

foobar
foobar