I am reading and learning now Python and C at the same time. (Don't ask me why, it is a lot of fun! :-))
I use "Learning Python" by Mark Lutz. Here is what he writes about functions in Python:

Unlike in compiled languages such as C, Python functions do not need
  to be fully defined before the program runs. More generally, defs are
  not evaluated until they are reached and run, and the code inside defs
  is not evaluated until the functions are later called.

I do not quite get it as in my second book K.N.King says that you CAN declare a function first and create a definition later.
English is not my native language so what I am missing here?
I can make only one guess, that it is somehow related to program runtime. In C the compiler runs through the program and finds the function declaration. Even if it is not defined, compiler goes on and finds function definition later. Function declaration in C helps to avoid problems with return-type of a function (as it is int by default). On the other hand in Python function is not evaluated until it is reached during runtime. And when it is reached, it does not evaluate the body of a function until there is a function call. But this guess does not explain a quote above.
What is then Mr.Lutz is talking about? I am confused a bit...
In C you can compile without declaring, the compiler assumes the function
is int, if that's the case your program compiles and runs.
If your function or functions are another type you'll get problems and you'll have to declare. It is often quicker to not declare and generate your declarations from your code to an h file and include where needed. You can leave it to a program to write this part of your program. Just like you can leave the indent, write a big mess and let indent do it for you.
Difference in declaring a function in Python and C