擅长:python、mysql、java
<p>你不应该使用你找到的代码。它有几个大问题,尤其是它实际上没有做任何事情(<code>locals()</code>是一个代理,从中删除对实际的局部变量没有影响,它会将您执行的任何代码放在同一个共享全局变量中,等等)</p>
<p>在那篇文章中使用<em>公认的答案</em>;重铸为一个函数,变成:</p>
<pre><code>import sys, imp
def load_module_from_string(code, name='dynamic_module')
module = imp.new_module(name)
exec(code, mymodule.__dict__)
return module
</code></pre>
<p>那就用这个:</p>
<pre><code>dynamic_module = load_module_from_string(code_string)
return_value = dynamic_module.MyClass().main(1, 100)
</code></pre>
<p>该函数生成一个新的、干净的模块对象</p>