Python Forum

Full Version: How to change global variable in function?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, I need your help, I have to make program containing changing a global variable using a function. But, without using "global". Do you have any idea how can I get around this?

Thanks in advance.
your function should return value and you will assign the returned value to the variable you want to change. The function may or may not take arguments.

def multiply(number):
    return number*3

my_var = 2
my_var = multiply(my_var)
print(my_var)
in this example I pass my_var as argument to the function, but that's not mandatory nor always the case
I'm confused. Do you need to change a global variable to the result of a function? Then you would just return the value from the function, and assign that to the global variable:

SPAM = 1

def eggs():
    return 2

SPAM = eggs()
Or is your assignment to so the change to the global variable within the function without using the global statement?
Thank you very much. :) All I need to do with this is a global variable type list and a function, which gets data and then save list into this variable. So, when I understand that correctly, all I have to do is creating a local variable type list inside a function, get data to this list, and this local variable make as return of that function and assign it to the global one, am I right?
that would be the better approach.
However you should know that list is a mutable type, and you can change the list elements inside the function without using global
my_list = [1, 2]
def change_list():
    my_list[0] = 3
    my_list[1] = 4

change_list()
print(my_list)

def change_list1(some_list):
    some_list[0] = 10
    some_list[1] = 11

change_list1(my_list)
print(my_list)

def change_list2():
    return [5, 6]

my_list = change_list2()
print(my_list)
Output:
[3, 4] [10, 11] [5, 6]
@buran that´s a good reminder, thanks for that. I have not realised this before.

Thanks for detailed explanation to both of you. :)