I don't understand why the variable 'y' doesn't update when I change the x? (The 'y' variable is dependent on 'x' right?)
x = 5
y = x*2
print(x)
print(y)
x = 3
# Expect it to print '3' and '6' instead it print '3' and '10'
print(x)
print(y)
(The 'y' variable is dependent on 'x' right?
No.
Few programming languages have dependent / computed variables[0] and Python is not one of them[1]. When y = x*2 is executed, the expression on the right-side of the = is fully evaluated and the result set as the value of y. y is thereafter independent from x[2].
Generally speaking, if you want y to be a function of x... you define it as a function of x:
x = 5
def y(): return x*2
print(x)
print(y())
x = 3
# Expect it to print '3' and '6' instead it print '3' and '10'
print(x)
print(y())
make's lazy variables and Perl's tied scalarsy to a mutable sub-structure of x changes to this sub-part of x will be visible through y. That's not actually a dependency though, it's just that the two variables point to the same (mutable) structure, so both "see" mutations applied to that shared structure.x = [1, 2, 3]. Setting y = x causes both variables to point to the same mutable structure. So if you do something like x[0] = 10 followed by print(y[0]), you will get an output of 10, not 1.Because after you assign a value to variable y, in order to change it you will need to access directly to y.
y= x*2 is assigning value to y according to what the value of x in this line of code. this how python works, there are other code languages who can preform like u expected.
after assigning the new value to x , you will need to write again y=x*2.
yis created based on thexvalue, but after that they're only friends.int,float,stringare saved by value not by reference. So, when you changex, the value of unlike mutable objectsy = 5*2instead ofy=x*2. After the initial declaration they have nothing to do with each other.