Python - Change variable outside function without return
<p>I just started learning Python and I ran into this problem. I want to set a variable from inside a method, but the variable is outside the method. </p>

<p>The method gets activated by a button. Then I want to get the value from that variable that I set when I press another button. The problem is that the value that I put inside a variable from inside the method doesn't stay. How would I solve this? </p>

<p>The code is underneath. <code>currentMovie</code> is the variable I try to change. When I press the button with the method <code>UpdateText()</code>, it prints out a random number like it is supposed to. But when I press the button that activates <code>UpdateWatched()</code> it prints out 0. So I am assuming the variable never gets set.</p>

<pre><code>import random
from tkinter import *

currentMovie = 0

def UpdateText():
    currentMovie = random.randint(0, 100)
    print(currentMovie)

def UpdateWatched():
    print(currentMovie)

root = Tk()
root.title("MovieSelector9000")
root.geometry("900x600")
app = Frame(root)
app.grid()
canvas = Canvas(app, width = 300, height = 75)
canvas.pack(side = "left")
button1 = Button(canvas, text = "SetRandomMovie", command = UpdateText)
button2 = Button(canvas, text = "GetRandomMovie", command = UpdateWatched)
button1.pack(anchor = NW, side = "left")
button2.pack(anchor = NW, side = "left")
root.mainloop()
</code></pre>

<p>Use <code>global</code> to modify a variable outside of the function:</p>

<pre><code>def UpdateText():
    global currentMovie
    currentMovie = random.randint(0, 100)
    print(currentMovie)
</code></pre>

<p>However, don't use <code>global</code>. It's generally a <a href="https://en.wikipedia.org/wiki/Code_smell" rel="nofollow">code smell</a>.</p>

python