On Tue, 28 Sep 2010 10:27:07 +0200 spir firstname.lastname@example.org wrote:
By recently studying a game scripting language (*), and designing a toy language of mine, I realised the following 2 facts, that may be relevant for python as well:
-1- no need for a separate multiline string notation
A single string format can deal text including newlines, without any syntactic or parsing (**) issue: a string notation just ends with the second quote. No idea why python introduced that distinction (and would like to know it); possibly for historic reason? The only advantage of """...""" seems to be that this format allows literal quotes in strings; am I right on this?
No, you're not. The ' form allows literal "'s, and vice versa. The reason for the triple-quoted string is to allow simple multi-line string literals.
The reason you want both single and multi-line string literals is so the parser can properly flag the error line when you forget to terminate the far more common single-line literal. Not as important now that nearly everything does syntax coloring, but still a nice feature.
-2- trimming of indentation
On my computer, calling the following function: def write(): if True: print """To be or not to be, that is the question.""" results in the following output: |To be or not to be, | that is the question. This is certainly not the programmer's intent. To get what is expected, one should write instead: def write(): if True: print """To be or not to be, that is the question.""" ...which distorts the visual presentation of code by breaking correct indentation. To have a multiline text written on multiple lines and preserve indentation, one needs to use more complicated forms like: def write(): if True: print "To be or not to be,\n" + \ "that is the question." (Actually, the '+' can be here omitted, but this fact is not commonly known.)
And in 3.x, where print is a function instead of a statement, it could be (leaving off the optional "+"):
def write(): if True: print("To be or not to be,\n" "that is the question.")
So -1 for this idea.