擅长:python、mysql、java
<p>Addy689解释了真正的问题:当从函数调用execfile()<strong><em>时,它会出现。execfile()在全局空间中运行良好。这就是为什么答案常常是“对我来说,这很管用”。</p>
<p>但是修改被调用脚本的解决方案可能是不可能的。
所以我在这里报告我认为最好的解决方案,它是在exec()函数的另一个等价问题上找到的(在那篇文章中:<a href="https://stackoverflow.com/a/11754346/1808778">https://stackoverflow.com/a/11754346/1808778</a>)。它与execfile()的工作原理相同</p>
<pre><code>def callingFunction(filename)
# ...
d = dict(locals(), **globals())
execfile(filename, d, d )
</code></pre>
<p>该解决方案的优点是,我们不需要知道调用的脚本:执行的是在<em>if<strong>name</strong>==<strong>main</strong></em>中命名的函数。</p>