<p>How would one create an iterative function (or iterator object) in python?</p>

First of all the
itertools module
is incredibly useful for all sorts of cases in which an iterator would be useful, but here is all you need to create an iterator in python:
yield
Isn't that cool?  Yield can be used to replace a normal
return
in a function.  It returns the object just the same, but instead of destroying state and exiting, it saves state for when you want to execute the next iteration.  Here is an example of it in action pulled directly from the
itertools function list
:
```
```
def count(n=0):
    while True:
        yield n
        n += 1
```
```
As stated in the functions description (it's the
count()
function from the itertools module...) , it produces an iterator that returns consecutive integers starting with n.
Generator expressions
are a whole other can of worms (awesome worms!).  They may be used in place of a
List Comprehension
to save memory (list comprehensions create a list in memory that is destroyed after use if not assigned to a variable, but generator expressions can create a Generator Object... which is a fancy way of saying Iterator). Here is an example of a generator expression definition:
```
```
gen = (n for n in xrange(0,11))
```
```
This is very similar to our iterator definition above except the full range is predetermined to be between 0 and 10.
I just found
xrange()
(suprised I hadn't seen it before...) and added it to the above example.
xrange()
is an iterable version of
range()
which has the advantage of not prebuilding the list.  It would be  very useful if you had a giant corpus of data to iterate over and only had so much memory to do it in.