* No explicit variable declarations (modulo `global`+`nonlocal`) means that variable name typos can't be reliably detected at compile-time. * The value of the loop variable at call-time for functions defined within a loop trips people up. * No self-balancing tree datatype of any kind is included in the std lib. * Function scope rather than block scope (e.g. `while` doesn't introduce a new scope) [Personally, I don't have much of a problem with this, but some people do.] * No anonymous block syntax (cf. Ruby or Smalltalk). Makes it harder/uglier to define/use custom control structures. The `with` statement would have been unnecessary.
Cheers, Chris On Mon, Sep 9, 2013 at 11:09 PM, Steven D'Aprano <st...@pearwood.info> wrote: > Some time ago, Tom Christiansen wrote about the "Seven Deadly Sins of > Perl": > > http://www.perl.com/doc/FMTEYEWTK/versus/perl.html > > > What design mistakes, traps or gotchas do you think Python has? Gotchas > are not necessarily a bad thing, there may be good reasons for it, but > they're surprising. > > To get started, here are a couple of mine: > > > - Python is so dynamic, that there is hardly anything at all that can be > optimized at compile time. > > - The behaviour of mutable default variables is a gotcha. > > - Operators that call dunder methods like __add__ don't use the same > method resolution rules as regular methods, they bypass the instance and > go straight to the type, at least for new-style classes. > > > > -- > Steven > -- > https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list