I am trying to change global value x
from within another functions scope as the following code shows,
x = 1
def add_one(x):
x += 1
then I execute the sequence of statements on Python's interactive terminal as follows.
>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2
Why is x
still 2 and not 3?
You can use $INCREMENT on a global variable or a subscript node of a global variable.
Example 3: Changing Global Variable From Inside a Function using global. In the above program, we define c as a global keyword inside the add() function. Then, we increment the variable c by 2, i.e c = c + 2 . After that, we call the add() function.
If you are familiar with other programming languages, such as C++ or Javascript, you may find yourself looking for an increment operator. This operator typically is written as a++ , where the value of a is increased by 1. In Python, however, this operator doesn't exist.
Because x
is a local (all function arguments are), not a global, and integers are not mutable.
So x += 1
is the same as x = x + 1
, producing a new integer object, and x
is rebound to that.
You can mark x
a global in the function:
def add_one():
global x
x += 1
There is no point in passing in x
as an argument here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With