I have recently been learning python after primarily coding in Clojure and Ocaml the last 36 months.
It has been a pretty frustrating experience, lots of the tools from functional languages are there, however Python as a language is extremely inconsistent. All these little quirks take up a significant chunk of cognitive overhead. Python also liberally add different syntax in places where it doesn’t seem to add much value (eg lambdas cannot destructure tuples, and don’t need to use return). Python has really showed me the value of keeping a simple syntax, and having value semantics everywhere). Mutation just isn’t a great way to write code outside of leetcode.
I fully agree with you and have expressed this sentiment many times. I use Racket and F# in my spare time, basically sister languages to what you use (!), and I have the same opinions. Knowing these other more structured, consistent, and principled languages makes Python a frustrating and difficult experience. Whenever I program in Python, never by choice, it's an exercise in unlearning sanity.
Knowing these other languages and with others like them out there (F#, Racket, Clojure, OCaml, Elixir), I have no practical or intellectual need for Python.
My favorite language has been Clojure for a long time, but given Python's popularity and widespread use I often wonder whether there is just some big underlying principle that would cause Python's appeal and superiority become clear, if only I could see it. Comments like yours and GP's help reassure me that there's not just some fundamental thing about Python that I'm missing. (And don't even get me started on Python's concurrency situation!)
The appeal is the libraries, like numpy, scipy,matplotlib tensorflow, qiskit the quality and the ease to use them. Basically python became what TCL dreamt of becoming (ok, don't kill me).
Clojure now has libpython: https://github.com/clj-python/libpython-clj.
Oooo, neat! Thanks for pointing this out, I'll have to look into it. Many of my struggles have also revolved around the ecosystem (pulling in and/or keeping up to date with modules that other teams have written, etc.) so I'm especially interested to see how this deals with that.