Guido has a good explanation of this here. Here's the most relevant part:
I have never considered Python to be
heavily influenced by functional
languages, no matter what people say
or think. I was much more familiar
with imperative languages such as C
and Algol 68 and although I had made
functions first-class objects, I
didn't view Python as a functional
programming language. However, earlier
on, it was clear that users wanted to
do much more with lists and functions.
...
It is also worth noting that even
though I didn't envision Python as a
functional language, the introduction
of closures has been useful in the
development of many other advanced
programming features. For example,
certain aspects of new-style classes,
decorators, and other modern features
rely upon this capability.
Lastly, even though a number of
functional programming features have
been introduced over the years, Python
still lacks certain features found in
“real” functional programming
languages. For instance, Python does
not perform certain kinds of
optimizations (e.g., tail recursion).
In general, because Python's extremely
dynamic nature, it is impossible to do
the kind of compile-time optimization
known from functional languages like
Haskell or ML. And that's fine.
I pull two things out of this:
- The language's creator doesn't really consider Python to be a functional language. Therefore, it's possible to see "functional-esque" features, but you're unlikely to see anything that is definitively functional.
- Python's dynamic nature inhibits some of the optimizations you see in other functional languages. Granted, Lisp is just as dynamic (if not more dynamic) as Python, so this is only a partial explanation.