<h2>可变阴影</h2>
<p>在第64行,您将变量<code>znamenko</code>设置为默认<code>'+'</code>:</p>
<pre><code>znamenko = "+"
</code></pre>
<p>然后,在运算符函数中,尝试将其设置为用户定义值,例如:</p>
<pre><code>def znamenkoplus():
znamenko = "+"
print(znamenko)
</code></pre>
<p>不过,这是有效的,而不是你的意思。它改变函数</em>中变量<code>znamenko</code><em>的值。
注意,这不是第64行的变量<code>znamenko</code>。这是一个<em>不同的变量</em>,具有完全不同的位置</em>,具有相同的名称。离开作用域后,函数内部的<code>znamenko</code>被释放,全局变量<code>znamenko</code>保持不变(这就是为什么它总是<code>'+'</code>)。这称为变量阴影。你知道吗</p>
<p>试试这个:</p>
<pre><code>def znamenkominus():
znamenko = "-"
print("Znamenko in the function", znamenko)
znamenko = "+"
print("Znamenko before change", znamenko)
znamenkominus()
print("Znamenko after change", znamenko)
</code></pre>
<p><code>znamenko</code>将具有与更改前相同的值。你知道吗</p>
<h2>从函数更改全局变量</h2>
<p>您可以通过添加<code>global znamenko</code>来更改全局变量:</p>
<pre><code>def znamenkominus():
global znamenko
znamenko = "-"
print("Znamenko in the function", znamenko)
znamenko = "+"
print("Znamenko before change", znamenko)
znamenkominus()
print("Znamenko after change", znamenko)
</code></pre>
<p>这将更改全局变量(不会创建任何局部变量)</p>