Really? You're calling Python a messed up programming language because ten years ago it got lexical scoping? I don't know about Ruby, maybe it's had a rougher road, but that's really the only scoping rule change Python got. It got an additional keyword -- nonlocal -- recently to allow you to rebind variables in outer scopes, but otherwise no change has been had since then. If this is a warning sign, what on earth am I supposed to be watching out for? What's this danger it's warning me against?