<p>这里有一个简单但肮脏的解决方案:使用可变变量。</p>
<p>而不是</p>
<pre><code>currentMovie = 0
def UpdateText():
currentMovie = random.randint(0, 100)
print(currentMovie)
</code></pre>
<p>可以对currentMovie使用单单元格列表,并将其作为(默认)参数传递给UpdateText():</p>
<pre><code>currentMovie = [0]
def UpdateText(cM=currentMovie): # The default value will 'bind' currentMovie to this argument
cM[0] = random.randint(0, 100) # This will change the *contents* of the variable
print(cM[0]) # I used a different name for the parameter to distinguish the two
UpdateText() # Calls UpdateText, updating the contents of currentMovie with a random number
</code></pre>
<p>请注意,即使使用新列表,也将<code>currentMovie</code>本身(而不是其内容)设置为新值将导致<code>UpdateText()</code>停止更新<code>currentMovie</code>,除非<code>def</code>块再次运行。</p>
<pre><code>currentMovie = [0]
def UpdateText(cM=currentMovie): # The default value will 'bind' currentMovie to this argument
cM[0] = random.randint(0, 100) # This will change the *contents* of the list
print(cM[0]) # I used a different name for the parameter to distinguish the two
currentMovie = 3 # UpdateText() will no longer affect this variable at all
# This will thus not throw an error, since it's modifying the 'old' currentMovie list:
UpdateText() # The contents of this list can also no longer be accessed
</code></pre>
<p>如果您正在快速而肮脏地构建一些东西,并且不想构建类,那么这是一个更方便的技巧;我发现Python非常适合这样的东西,所以我认为尽管有其他答案,但这仍然值得分享。</p>
<p>不过,为了更严肃的目的,创建<a href="https://stackoverflow.com/a/39894555/12682030">bruno's answer</a>中的类几乎肯定会更好。</p>