[Python-ideas] Idea for new multi-line triple quote literal

Steven D'Aprano steve at pearwood.info
Tue Jul 2 04:04:30 CEST 2013


On Mon, Jul 01, 2013 at 06:22:25PM +0200, Philipp A. wrote:
> 2013/7/1 Guido van Rossum guido at python.org
> 
> That‘s a compelling argument. Let’s do it. (Assuming the definition of
> exactly how to indent or dedent is not up for discussion — if there
> are good reasons to disagree with textwrap now's the time to bring it
> up.)
> 
> I don’t know if it’s a good reason, but I’m of the opinion that the
> required backslash at the beginning of to-be-dedented string is strange:

It's not *required*. It's optional. You can live with an extra blank 
line:

s = """
    first line
    second line ... """

or you can manually indent the first line:

s = """    first line
    second line ... """

or you can slice the string before calling dedent, or, in my 
opinion the neatest and best solution, just escape the opening 
newline with a backslash:

s = """\
    first line
    second line ... """

But in any case, I don't like the idea of making the proposed dedent 
method be a DWIM "format strings the way I want them to be formatted" 
method. It's called "dedent", not "dedent and strip leading newlines".

I'm okay in principle with dedent taking additional arguments to 
customize the behaviour, such as amount of whitespace to keep or a 
margin character, so long as the default with no args matches 
textwrap.dedent.



-- 
Steven


More information about the Python-ideas mailing list