Iteraror and Generator

 #! ruby

 def fibUpTo(max)
   a,b = 1,1
   while a <= max
     yield a
     a,b = a+b, a
   end
 end

 fibUpTo(1000) do |n|
   puts n
 end
 #! python

 from __future__ import generators

 def fibGenerator(num):
   a,b = 1,1
   while a<=num :
     yield a
     a,b = a+b, a

 for i in fibGenerator(10000):
   print i
 class Fib:
   def __init__(self, max_num=0)
     self.max_num = max_num
     self.i = 1
     self.num = 0

   def __iter__ (self):
     return self

   def next(self):
     self.i, self.num = self.i + self.num, self.i
     val = self.i
     if val > self.max_num:
       raise StopIteration
     else:
       return val
     
 for i in Fib(1000):
   print i


Python's 'for' (ver 2.2later) is so powerful.
it can iterate any object that implements iterator method.

  for i in alist:

  for k in adict:
  for k,v in adict:

  for line in afile:

  for i in arange:

  for i in aobj:

  etc ...