Forward declaration
http://en.wikipedia.org/wiki/Forward_declaration
everything has to be defined before you call it
This is exactly the same as in C/C++" Well no it is isn't at all really. You can have a forward definition of a function in C but you cannot in Python. You can have run-time checking of functions in Python but cannot in C. You can have implicit prototypes in C and that is similar.
所以,python只能先定义后调用。