Outside of latency-sensitive stuff (i.e. anything where you're counting mikes becomes c++ territory), most places roll an interpreted language for both production and research. These days it's usually python, but still have legacy code (e.g. myself I have code in perl, R, python and a fair bit of VBA).
The reality is that most of production code is not the code that sends orders, but rather a variety of micro-servers, converters, fitters, reports, alerts etc. Python is perfect for that and I honestly can't think of any other language that does everything just as well.
I agree with you primarily that Python has become the glue language PERL (ahem...perl) once was. Combine this with the relatively easy to understand syntax and it's no wonder trader-turned-developer types have flocked to it. It however has a number of faults I feel limit it's utility:
1. It is generally slow.
Most people don't understand the C bindings well enough to implement a faster solution using them. The average code written and deployed is actually very slow.
2. Enforced tabs
This is a pet peeve of me. Deeply nested functions you find in mathematically intense functions greatly over-run the 120 column limit most companies enforce for readability. This creates a mess of attempting to split something like a function that calculates the MLE of a GARCH function into a bunch of smaller functions
just for readability.
3. Threading is garbage
Global interpreter lock basically makes this point undebatable. Any sufficiently complicated task is either offloaded to the underlying C bindings or succumbs to absolute garbage execution.
4. Difference between declaration and use of a variable is ambiguous
5. A lack of static typing prevents verification of expected behaviors. In math functions this is very important to me.
6. Aspects of functional programming useful for mathematics such as numerical methods are bolted-on and thus poorly written
The itertools library is an atrocious compromise given to you by the benevolent dictator who is an outspoken critic of functional paradigms.
7. As a professional developer the module system makes me want to bang my head against a desk
The only module system worse in my opinion is Rust.
8. Object orientation is an afterthought
9. Having a "Benevolent Dictator for Life" greatly reduces the ability of the language to be flexible to industry needs.
I think Python became popular because it was adopted fully and wholeheartedly by Google and crammed down everyone's throat. You have basically no choice if you want to use well maintained libraries for machine learning and scientific computing. That is, unless you can afford MATLAB. As a result it's popularity has greatly accelerated on the back of Google support. To me, it is far from ideal. It, to me, is the same as Javascript. It was adopted by a bunch of big names and thus gained incredible (unwarranted) popularity.
However, to bring it full circle. For the average discretionary trader it is fine. I have built most of my models in C++ and I generally intend to keep them there. Professionally, I work in Java. Both are excellent languages - however I can understand the aversion to them given the (as you specified) affinity for Python in industry.