
These two questions are ones where good arguments can be made in both directions. Having explicit notation for multi-line strings is primarily a benefit for readability and error detection. The readability benefit is that it flags to the reader that the next string literal may cover several lines. As Mike noted, the error detection benefit is that the parser can more readily detect a missing end-quote from a normal string instead of inadvertently treating the entire rest of the file as part of the string and giving a relatively useless error regarding EOF while parsing a string. Stripping leading whitespace even inside strings is potentially convenient for the programmer, but breaks the tokenisation stream. String literals are meant to be atomic. Having the parser digging inside them to declare certain whitespace to not be part of the string despite its presence in the source code is certainly a valid design choice a language could make when defining its grammar, but would actually be a fairly significant change for Python. For Python, these two rules are a case of "status quo wins a stalemate". Changing Python's behaviour in this area would be difficult and time-consuming for negligible benefit, so it really isn't worth doing. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia