# [Tutor] How does this work (iterating over a function)?

Raúl Cumplido raulcumplido at gmail.com
Wed Jul 9 17:18:32 CEST 2014

```Hi,

Let's see what happens iteration by iteration. First iteration:

def fibonacci(max):  #using a generator
>
a, b = 0, 1
>
# The value of a is 0 and b is 1, easy :)

>     while a < max:
>
yield a
>
# yield a (0) (yield is a keyword that is used like return but returns a
generator). This value will be sent to the for iteration on the first
iteration.

On the second iteration:

>         a, b = b, a+b
>
# a is 1 now and b is 1 (1+0)
And then yield a which now is 1

On the third iteration:

>         a, b = b, a+b
>
# a is 1 now and b is 2 (1+1)
And then yield a which now is 1

On the forth iteration:

>         a, b = b, a+b
>
# a is 2 now and b is 3 (2+1)
And then yield a which now is 2

> for n in fibonacci(1000):
>     print n,
> ------
>

n is the value for each iteration that the yield statement is returning.
You can read the response on this thread if you want to understand more