Sometimes I find myself stumbling over Python issues which have to do with what I perceive as a lack of orthogonality.
For instance, I just wanted to use the index() method on a tuple which does not work. It only works on lists and strings, for no obvious reason. Why not on all sequence types? Or, another example, the index() method has start and end parameters for lists and strings. The count() method also has start and end parameters for strings. But it has no such parameters for lists. Why? However when I ask such things I noticed I get answers like: "Is there a use case?" "You can do it some other way so it is not worth bothering." Let me ask back: Do I really need to bother and justify it with a use case in a case where the language can be easily made more consistent or orthogonal without breaking anything? What about design goals such as: - orthogonality - coherence, consistency - principle of least astonishment ("Python fits my brain") - simplicity ("kiss" principle) - aesthetics, symmetry Actually, which priority have the above design goals for Python? Are other design goals considered more important? If I compare them with the "Zen of Python", I find some of the above: consistency -> Special cases aren't special enough to break the rules simplicity -> Simple is better than complex aesthetics -> Beautiful is better than ugly Actually, concerning the last two, you already need to understand the Zen of Python to decide if something is "simple" or even "beautiful", so they are not really suitable to *define* the Zen of Python. For me, a programming language is beautiful if it is orthogonal and coherent. But for others, this may be different. Somehow, I'm missing a direct allusion to the following in the Zen of Python: - orthogonality - principle of least astonishment Maybe I am I lacking the satori of a real Python Zen master? -- Christoph -- http://mail.python.org/mailman/listinfo/python-list