1. Implicit Variable Creation
This is probably my biggest complaint. Why would you want to implicitly create a variable the first time something is assigned to it? This might make sense in a language where variables are immutable by default (after all, you only ever assign a variable once), but Python isn’t. Also, I realize there is a technical difference between rebinding names and changing the value of a variable; I don’t find that particular distinction useful here.
2. Dearth of Collections (in the standard library)
Don’t get me wrong: defaultdict and namedtuple are nice, but on occasion I really find myself wishing for some more advanced data structures, e.g., Red-Black tree I’m not even talking about probabilistic structures like Bloom filters or skip lists.
3. Lack of Tail-call Elimination
I know it likely won’t happen but I still wish I had it. To me (and I’m sure many others), recursive algorithms are the most natural way to express certain algorithms, e.g., traversing a tree. I can do it using a loop, but it really drops me out of the zone.
4. Concurrency in the Standard Library
In an ideal world, Python would support concurrency on a level with
first- class functions, similar to Erlang. It’s almost
not even fair to ding Python on this, since pretty much every other
language its age has the same problem, but a man can dream, right? At
multiprocessing module made it into
the standard library.
It would be really swell if Python had support for something like
know that PEP 3119 introduced
Abstract Base Classes, so this one is probably on the way to being remedied,
but the feature is so new I haven’t yet encountered it in the wild.
Back to flipping out…