python - Shorthand code and Fibonnaci Sequence -


this question has answer here:

i have found example fibonacci sequence goes this:

def fib(n):     a, b = 0, 1     while b < n:         print (b)         a, b = b, a+b  fib(20) 

so here's don't it:

a, b = 0, 1 # shortcut writing = 0 b = 1 

right?

now, following same logic

a, b = b, a+b #should same writing = b b = a+b 

but isn't because if write that, output different. i'm having hard time understanding why. thoughts?

yes isn't same , because when write -

a, b = b, a+b 

the value of a , b @ time of executing statement considered, lets before statement, a=1 , b=2 , first right hand side calculated , b=2 calculated , a+b=3 calculated. assignment occurs, a assigned value 2 , b assigned value 3.

but when write -

a = b b = a+b 

the assignment occurs along calculation, first b=2 calculated, assigned , becomes 2 , a+b calculated (with changed value of a) , a+b=4 , assigned b , b becomes 4 , , hence difference.

a,b = b, 

this shorthand swapping values of a , b , please note if want swap values without using notation, need temporary variable.

internally how works right hand sid made tuple, , values unpacked, simple test see -

>>> = 5 >>> b = 10 >>> t = a, b >>> t (5, 10) >>> b, = t 

Comments

Popular posts from this blog

java - Andrioid studio start fail: Fatal error initializing 'null' -

android - Gradle sync Error:Configuration with name 'default' not found -

StringGrid issue in Delphi XE8 firemonkey mobile app -