擅长:python、mysql、java
<p>如果只传递<code>locals</code>(作为函数的全局数据),那么事情或多或少会起作用:</p>
<pre><code>class Person:
def woot(self,data):
print("Woot! ",data)
def test(self,boss,data):
x = "def callback():\n self.woot(data)\nboss.registerCallback(callback)"
exec(x, locals())
</code></pre>
<p>当然,如果您也需要globals,您可以将它们打包在一起:</p>
<pre><code>def test(self, boss, data):
namespace = globals().copy()
local_copy = locals().copy()
namespace.update(local_copy)
x = 'def foo(): pass'
exec(x, namespace)
</code></pre>