擅长:python、mysql、java
<p>全局变量仅在import语句开头导入一次。因此,如果global是一个不可变的对象,比如str、int等,则不会反映任何更新。但是,如果global是一个可变的对象,比如list等,则会反映更新。例如</p>
<p>全局1.py:</p>
<pre><code>globals()['a']=[100]
def setvalue(val):
globals()['a'][0] = val
</code></pre>
<p>输出将按预期更改:</p>
<pre><code>[100]
[200]
</code></pre>
<h2>旁白</h2>
<p>像普通变量一样定义全局变量更容易:</p>
<pre><code>a = [100]
def setvalue(value):
a[0] = value
</code></pre>
<p>或在编辑不可变对象的值时:</p>
<pre><code>a = 100
def setvalue(value):
global a
a = value
</code></pre>