Python has implicit declarations, which lead to a world of hurt because you can't directly modify variables in arbitrary scopes. Python 3 has nonlocal, but that only extends the number of function scopes you can refer to to three.
I think having implicit declarations is probably the worst mistake Python made. It just makes things so much more confusing.