


While I don't mind the lack of ability to catch semantic errors upfront as a tradeoff for the dynamism that Python offers, I wish there were a way to catch syntactic errors and silly things like mistyping variable names without having to actually run the code. Need to write threading primitives or kernel code or something? Good luck. The most important ones I can think of are user-defined value types (I'm guessing these can be created with metaclass magic, but I've never tried), and ref function parameter.

It's missing a few features that can be useful to library/generic code and IMHO are simplicity taken to unhealthy extremes. Can't wait for the libs I use to be ported so this flaw can be sent to the ash heap of history for good. Edit: I still use Python 2 due to library support, and this design flaw irritates the heck out of me, but apparently it's fixed in Python 3 due to the nonlocal statement. Nested functions kind of suck in that you can't modify variables in the outer scope. A lot of times this doesn't matter, but it definitely means you'll need another language for those performance-critical bits. Here are the drawbacks in order of importance to me personally: I use Python somewhat regularly, and overall I consider it to be a very good language. If must use another language as a comparison, but only to illustrate a point which would be hard to elaborate on otherwise (i.e. yadda yadda yadda) - more of an objective (to some level) opinion which language features are badly designed, whether, what are maybe some you're missing in it and so on. Note: I'm not asking for a language comparison here (i.e. So, what would be in your opinion, objective drawbacks of Python. No language is perfect, some are just better than others. But, as a wise man once said (calling him a wise man only because I've no idea as to who actually said it not sure whether he was that wise at all), to really know a language one does not only know its syntax, design, etc., advantages but also its drawbacks. Python seems all the rage these days, and not undeservingly - for it is truly a language with which one almost enjoys being given a new problem to solve. It is not currently accepting new answers or interactions. This question and its answers are locked because the question is off-topic but has historical significance.
