+ 1
Why does it say that free is a local variable if I declared it outside of the function?? I just want to change the value of it
9 Réponses
+ 7
You cannot modify a global variable(for a list see below example, how we can access and modify it) in a function, but you can access it.
If you want to modify you need to declare the variable free as global in your function
Ex-
free = 0
def func():
global free
free += 2
func()
print(free)# output 2
*Instead you can place the variable free inside the function, but if you want to keep the reference of free everytime you call then make it a global variable.(using global is usually a not good idea, so placing a parameter for every call would be one of your option or use a list instead to change the references of free variable for every call)
ex-
free = [False]
def func():
if not free[0]:
print('you can change me)
free[0] = not free[0] #for alternating
'''
if you want to make it just available
once you can simply do
free[0] = True
'''
else:
print('Now you cannot modify me')
#once check you logic statement for time , it meant it wants time only under 2 or equal to it
+ 7
Prabhas Koya ,
we should be careful by saying: "You cannot modify a global variable in a function". it depends on what we are going to modify.
if we modify variable 'test' inside the function, we are going to re-assign the variable by using '=' or like '+= ...'. this is not possible, but we can change this behavior by using the global keyword for test.
but we can have a variable 'lst' with a list of numbers or whatever, where we can modify the elements of the list, without using global for this variable.
test = 0
lst = [1,2,3]
def add(num):
global test
test = test + num
lst[1] = 99
add(7)
print(test)
print(lst)
+ 6
Lothar variable list; generally we talk about list ,yet I gave him an example of the list , thanks for mentioning, I will add additional info ,if there might be a confusion.
You mentioned we can modify a list but we cannot modify it with += inside a function ,,,
+ 5
Declare in the function:
global free
Also the logic in line 6 needs correction.
time <= 2
should be
time >= 2
+ 2
How you are doing?
I didn't get any error.
+ 1
I didn't, and on my PC I get this error....local variable 'free' referenced before assignment 😐
+ 1
Thanks guys!!
0
Did you get the free pass????
0
Yes