beginner question fibonacci

Robert Kern rkern at ucsd.edu
Sun Jul 17 09:53:04 EDT 2005


Joon wrote:
> 
>  >>> # Fibonacci series:
> ... # the sum of two elements defines the next
> ... a, b = 0, 1
>  >>> while b < 10:
> ...       print b
> ...       a, b = b, a+b
> ...
> 1
> 1
> 2
> 3
> 5
> 8
> 
>  >>> a, b = 0, 1
>  >>> while b < 10:
> 	print b
> 	a = b
> 	b = a+b
> 	
> 1
> 2
> 4
> 8
> 
> Why a, b = b, a+b isn't a = b; b = a+b ?

It's actually equivalent to:

temp = (b, a+b)
a = temp[0]
b = temp[1]

The temporary tuple object is created first, with the old values of a 
and b. Then a and b are reassigned. The value of a doesn't change until 
*after* a+b is calculated.

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter




More information about the Python-list mailing list