I am trying to make the Fibonacci sequence I don\'t get why this:
def fibonacci(n):
f1 = 0
f2 = 1
i = 1
while i < n:
print(f2)
The variables f1 and f2 simultaneously get the new values f2 and f1 + f2, the expression
f1, f2 = f2, f1 + f2.
Demonstrating that the expressions on the right-hand side are all evaluated first before any of the assignments take place. f1 + f2 use the f1 old value we don't use the f1 new value. The right-hand side expressions are evaluated from the left to the right.
In the first example, the value of f1 from the previous iteration is discarded before f2 is updated.
f1, f2 = f2, f1 + f2
can be seen as shorthand for
tmp = f1
f1 = f2
f2 = tmp + f2
if that helps it make more sense. The latter is what you'd have to do in many other languages to get the desired effect.
In the latter example, the right hand side is evaluated first:
f1, f2 = f2, f1 + f2
So the value of f1 used in the calculation of f2 is the "old" value.
In your code, when you do:
f1 = f2
f2 = f1 + f2
the value of f1 has already changed when you go to evaluate the new value for f2.