While I think Python has a very elegant design that successfully straddles the fine line between the minimalism of Lisp and the rococo complexities of Perl, it's certainly not perfect. There are various design features that I consider ugly, or at least suboptimal in some way. This essay will examine the most significant problems in Python as I perceive them, assisted by suggestions from the comp.lang.python crowd.
The purpose of this discussion isn't to bash Python, or to second-guess GvR; most of these problems are rather difficult to solve and don't have any obviously correct solution, even if one disregarded backward compatibility. Instead, the goal is simply to demonstrate awareness of Python's flaws, and to ask if they're fixable. One test of whether someone is a good programmer is to ask them to assess the tools they use -- languages, libraries, and operating systems. Someone who cannot perceive flaws or express an opinion about the low and high points of a design is either not accustomed to thinking analytically about the systems they encounter or is blindly partisan in the service of their chosen favorites. Computing, at least in the exploratory fields where I hang out, is more of an art than a science, and inability to critique a design is a serious liability.