So you do agree colons are line noise? Colons are unpleasant for me
not because I have to type them (though this certainly is a factor,
too), but I have to read them every time I read Python code and
they disrupt the mental flow.
You are assuming colons improve readability, which I disagree.
Readability comes from indentation, not from punctuation. If you
logic holds, you might have to use semicolons as well.
Just because punctuation is not necessary does not mean it's not
useful. For example, you could argue that "f(1,2,3)" and "f(1 2 3)"
should be both allowed. Or you could argue that you dont even need
colons OR semicolons in one-liners: "if condition do_f() do_g()
do_h()". At some point aesthetics matters (even if it is an objective
One major difference between semicolons and colons is their frequency
of use. A colon once every 8-10 lines of code is less tedious/noisy
than a semicolon on EVERY line of code. Second, a colon always
precedes a linebreak AND an indent (a visible change), but semicolons
never precede anything but a simple linebreak. Colons and indents are
complementary. Third, colons and semicolons look similar; in some
ways, colons are more useful when semicolons are NOT used because
visual ambiguity is lower.
I almost never forget a colon in Python, because (to me) they feel and
look natural (and the parser gives a great error message when a colon
is missing!). I get missing-semicolon and missing-brace errors in C++
often enough (albeit infrequent) that I do NOT miss them in Python
(and the cryptic error messages they cause, sometimes in different
files than the one they're missing from)