I disagree. I mean sure, you can write something akin to functional programs in python, but the language as a whole is "mutability first" to a very large degree.
From almost every language I have used, I find python one of the furthest from my idea of functional programming (which means different things to different people). Which, in my mind, also makes it a pretty darn useless ML. It is a fine language on its own, but understanding it in terms of lisp (or even worse, scheme) or, say, standard ML is a not very useful.
I think a good exercise regarding this is trying to write YOUR-FAVOURITE-LANGUAGE in ANOTHER-LANGUAGE.
Writing idiomatic scheme in standard ML is surprisingly straightforward. Writing scheme in python is awful, regardless of functools.
Functional Python for me breaks down with the lazyness of generators. Sure, map returns a generator and that's fine. But you can't pass the result to multiple consumers as the generator has an internal state.
It's like a weird version of linear types where every value is only allowed to be used once.
APL introduced the name "reduce" and was the first to have it by ten years or so (published 1962, implemented 1966). Fairly sure Lisp had map first as the Each operator only appeared in nested APLs around 1981. APL may have had Compress before Lisp had filter, but they're not really the same: APL's isn't a higher order function; it takes one boolean filter list and another list to be filtered.
Reduce and Compress are both denoted / which is sometimes a problem.
In a language like APL map adds very little compared to reduce/fold. In scheme, fold is a lot more verbose than map. Map saves on typing and on householding. In APL? I would argue gain is a lot smaller. I have seen actually useful APL programs in less code than a fold-left filter in scheme.
sure, no car, cdr or cons, but you can do that with list notation and it's cleaner anyhow.