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.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