擅长:python、mysql、java
<p>我的答案与@Cyrill的答案相似,但有一些细微的差别。<br/>
有3种方法可以调用<code>exec</code>函数:</p>
<ol>
<li>带有1个参数,例如<code>exec('a = 2')</code>。这将在当前范围内执行语句,从而创建一个局部变量</李>
<li>有两个参数,例如<code>exec('a = 2', globals())</code>。这将在supplied全局名称空间中执行语句,该名称空间也是当前全局名称空间(由<code>globals()</code>返回)。这将改变全局名称空间</李>
<li>有3个参数,例如<code>exec('a = 2', globals(), loc)</code>。这将使用supplied全局名称空间作为全局名称空间,在supplied本地名称空间(第三个参数)中执行语句。这将改变本地名称空间</李>
</ol>
<p>通过使用第二种方法,我们可以在全局命名空间中执行代码,因此:</p>
<pre class="lang-py prettyprint-override"><code>def abc():
qwerty = 'a = 2'
exec(qwerty, globals())
abc()
print(a) # outputs 2
</code></pre>