I’ve recently played around with f2py (for linking my python and fortran codes), and it seems to support some F90/95 features.
F2PY Users Guide and Reference Manual
For example, we can pass Numpy ndarray to Fortran assumed-shape arrays, like written in these Question and Answer pages.
However, as far as I experienced, f2py tries to perform many things as automatic as possible, which sometimes makes the internal workings not very clear from the user side (IMHO), which might have pros and cons. Although I think the user can do any “low-level” things with f2py (if desired), it may be more straightforward to use other tools for C-FFI + write necessary wrapper functions by ourselves (rather than relying on auto-generation like f2py). I’ve recently read “High Performance Python” (book), and Chap.7 has a nice summary of some tools like ctypes, cffi, f2py, and cython (with their comparisons, potential pros/cons, etc). For example, cffi seems pretty straightforward to use (but I haven’t played with it yet…)