Assigning multiple variables in one line

后端 未结 3 2028
闹比i
闹比i 2021-01-24 02:11

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)
               


        
相关标签:
3条回答
  • 2021-01-24 02:44

    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.

    0 讨论(0)
  • 2021-01-24 02:53

    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.

    0 讨论(0)
  • 2021-01-24 03:09

    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.

    0 讨论(0)
提交回复
热议问题