>>120
Python (like most other scripting languages) does not require variables to be declared, as (let (x 123) ...) in Lisp or int x = 123 in C/C++. This means that Python can't even detect a trivial typo - it will produce a program, which will continue working for hours until it reaches the typo - THEN go boom and you lost all unsaved data. Local and global scopes are unintuitive.
This isn't that big a deal. Just stop making typos. (not kidding.) Python's loop scoping is retarded though. I agree with that.
Assignments are not expressions
I actually like this. Side effects always being "called out" with statements can help draw attention to them. I like assignment being an expression in C only because you do everything with side effects in C.
Quite quirky e.g. __init__. Triple-quoted strings seem like a syntax-decision from a David Lynch movie, and double-underscores seem appropriate in C, but not in a language that provides list comprehensions. There has to be a better way to mark certain features as internal or special than just calling it __feature__.
Lua's metatables. They still use underscores though O_o