Have you looked at Numba? There are guarantees about memory that can be made with Fortran that can't be expressed with C. Numba is trying to bring the same type of optimizations to NumPy python code, because it does know some of the memory constraints.
Note: I work for Continuum Analytics.
There is also an autojit decorator that watches what you're calling the function with, and compiles it for the given type signature.
f2py foo.f -c -m foo
Which creates a foo python module with easy access to whatever functions you put in foo.f, with proper type checking and conversion from python objects to fortran arrays. It is also clever enough to remove some unecessary inputs which are common in old fortran. For example, in fortran you usually define an extra input argument to be the length of an input array. f2py determines that this variable is uncessary as it can be determined from the length of the python object and makes it optional.
If you write fortran90-95 it's even better, as you can mark a variable as output and f2py puts it on the left side automatically.
I wish they would update it to support pointers and custom types, though. That's about the only thing it lacks right now.
It's the best and quickest way I know of linking python and native code. Scipy's weave is also nice.