This is way too subjective. If by "good programming practices," you mean consistent indentation, then sure, Python works for that. But indentation is something most programmers learn the first time they write a program. I think good programming goes well beyond that.
Over the years, the idea of what is good programming practice has changed. Python, other than the indentation thing, doesn't really excel in any one category. It's not the most object-oriented language around, nor does it (yet) offer full support for functional programming.
Here are some possible definitions of good programming practices, and a representative language for each:
- Pure object oriented design:
SmallTalk was the first real OO language, and in some ways still the purest. Literally everything is a class.
- Pragmatic object oriented design:
Java, for all it's detractors, was a huge step forward in terms of encouraging good programming practices. It is strongly typed, almost everything is a class, and it requires self-documenting class design, to a certain extent (by explicitly listing thrown exceptions, making functions private by default, etc.) Java enforces disciplines that are valuable for large development teams.
- Functional programming
Haskell is often praised as being the most purely functional language around. Assignment is verboten, and side effects are impossible unless your function explicitly asks for them.
- Robust concurrency
Erlang (another language that encourages the functional programming paradigm) is known for its robustness in a concurrent environment. Never having studied or used it, I can't personally vouch for this, but its track-record seems impressive.
- Iterative development
There are a ton of Lisp evangelists out there. They can't all be wrong, can they?
- Quick 'n' dirty
Sometimes you just need a script done quickly. Thank you, Perl. ;)