While imperative languages often have some functional aspects, they're not "pure." And functional programming is all about purity. :-) Just because I can do things like "map" in Ruby or python doesn't make the language functional. One problem that Python has as far as functional programming is that it doesn't optimize tail recursion. Which is very common in functional languages.
You should try to learn Haskell if you ever get a chance. I'm about 2 weeks into it and it is blowing my mind coming from Ruby and Python. Normally I can pick up languages pretty easily, but this.... this is just insane. It is like learning to program all over again. You aren't getting the full experience if you're just using a few functional aspects of a imperative language.