x=100
def fun2():
print x
x=10000
print x
fun2()
The above program showing local variable x reference before assignment. Why it is not printing 100 10000
x=100
def fun2():
print x
x=10000
print x
fun2()
The above program showing local variable x reference before assignment. Why it is not printing 100 10000
x in the function is a local variable and can't access the other local variable you define first because they are in different scope.
Add global x
to the start of your function or define x inside the function.
You appear to not know about variable scoping.
The variable x does not exist in the function scope.
You have to place global x
before your print statement in order to access the global variable x.
x = 1 # Global x
def f():
x = 2 # function-local x
print(x) # prints 2
f()
print(x) # prints 1 because it uses the global x which remains unchanged
If you want that to work you need to specify inside the function that the x
variable you are using is the one in the global scope by using the global
keyword.
x=100
def fun2():
# Add this line
global x
print x
x=10000
print x
fun2()
Below code will print the value of x -> 100
, as it is there in main scope @samba, but when you change the value of it doesn't work that way as it is not defined in the function.
x = 100
def fun2():
print(x)
fun2()
This doesn't work as the same way:
x = 100
def fun2():
print(x)
x = 1000
print(x)
fun2()
and through error:
UnboundLocalError: local variable 'x' referenced before assignment
x
is a local variable and not initialised in function fun2()
.
You need to understand variable scoping here, Please check Global and Local variable scope
If you want to use it globally use global
keyword in your function.
Because u assigned variable before function. Just try this
def fun2():
x=100
print x
x=10000
print x
fun2()
It will output 100 and 1000