There's nothing rising about it, Django been around and very popular for years.
Python is just a great confluence of all of the things that other languages lack, and the Python language is adapting to include more and more of the things people actually want. I don't think the Ruby language has been nearly as responsive (some would even say that Python has been too responsive, and certain language features are going too far outside of what the core of the language should do).
Also, Python is notorious for its excellent documentation (Django follows in those footsteps) and gigantic helpful community. I don't know how comprehensive Ruby's docs are, however.
Python hits all the notes, from "I want to write a random script to do a thing" to "I want to develop enterprise level software with hundreds of thousands of lines of code". You can probably pick Python as a default for nearly any baseline business-method problem and be in pretty good shape.
IMHO, I find python increasingly lacking in features, especially its lack of enthusiasm in adopting functional features, including immutable data structures, pattern matching/ destructuring, python lambda functions are restrictive. To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.
Generally it is true that learning a new language, will give one new tools to reason about problems. I find Kotlin and Python amongst the languages I have used, to offer the least new insights and ideas to the student.
> To my eye a strong imperative flavor pervades most python code. After some time spend dabbling in Clojure, I find python rather primitive.
Likewise here (except Rebol instead of Clojure). I've never been able to explain it well, but something about Python feels really limited in a very similar way as Java (like, 1.6ish) does.
Not all languages need to be functional, or grow in their functional support. Functional programming isn't the future, and Python is very opinionated about how you use it, so adding functional features would further muddy the water in terms of how a new user gets started in the language.
Adding functional features would make Python materially worse.
If that opinionated manner is the usage of a plain imperative form, then it isn't leveraging the advancements made more popular in the upsurge of interest in functional methods in the last 10 years.
I am not saying python should grow these features, but merely that for any new work for which python is being considered there could be a strong case made for choosing a more modern, more safer, more functional language instead.
Functional isn't safer or modern, and Python is about as safe as they come. Try out type hinting if you're scared of duck typing.
Besides, safety for its own sake isn't all it's cracked up to be. I'm happy to take on additional risk in my development process if it allows me to move as fast as Python does. I can account for that risk in other areas, like how I deploy changes and how I do redundancy/failover.
One of the main findings of the SO survey was that Python is indeed rising, overtaking other languages as one of the most popular and desired, so although it was popular in the past, it's definitely rising.
Most everything else you said could also be said of Ruby - docs, helpful community, flexibility from scripting up to massive webapps. That's what perplexes me - what are the "more of the things people actually want" specifically that drive Python's growth?
It's degrees. Sure Ruby has those things too, but Python's is better/more comprehensive.
Go look at the releases up from 3.4 of Python. The features that have been added since then are pretty specifically what the community has been asking for. asyncio being integrated into the language, type hinting, f strings, just to name a few.
But yeah, it's not about "does it check the box" at this point with language like Python and Ruby, it's about how they check the box, and to what degree. Simply having a feature isn't enough.
It's really sad that those smart people can name a programming language as 'Go' and I get confused whether you've started talking about it or was just a verb...
Python is just a great confluence of all of the things that other languages lack, and the Python language is adapting to include more and more of the things people actually want. I don't think the Ruby language has been nearly as responsive (some would even say that Python has been too responsive, and certain language features are going too far outside of what the core of the language should do).
Also, Python is notorious for its excellent documentation (Django follows in those footsteps) and gigantic helpful community. I don't know how comprehensive Ruby's docs are, however.
Python hits all the notes, from "I want to write a random script to do a thing" to "I want to develop enterprise level software with hundreds of thousands of lines of code". You can probably pick Python as a default for nearly any baseline business-method problem and be in pretty good shape.