On Fri, Mar 12, 2021 at 10:41 AM Matt Williams <m...@milliams.com> wrote:
>
> Hi,
>
> It's becoming more popular in Python to have interfaces which are built 
> around method chaining as a way of applying operations to data. For example 
> in pandas is moving more towards a default model where methods do not change 
> the object in-place but instead return an altered version (or at least an 
> altered view) of it.
>
> The major downside to method chaining is that it ends up creating long lines 
> of code which can become hard to read. The two main solutions to this are 1) 
> break down the chain and give the steps their own variable names and 2) split 
> it over multiple lines using `\` as a line continuation.
>
> e.g.:
>
>   y = x.rstrip("\n").split(":")[0].lower()
>
> would become
>
>   y = x.rstrip("\n") \
>        .split(":")[0] \
>        .lower()
>
> I find the continuation character visually distracting, easy to forget and 
> does not allow for line-by-line commenting (causing `SyntaxError: unexpected 
> character after line continuation character`):
>
>   y = x.rstrip("\n") \
>        .split(":")[0] \  # grab the key name
>        .lower()
>
> My idea is to alter the syntax of Python to allow doing:
>
>   y = x.rstrip("\n")
>        .split(":")[0]
>        .lower()
>
> i.e., not requiring an explicit line continuation character in the case where 
> the next line starts with a period.
>
> I've had a search through the archives and I couldn't see this discussion 
> before. Feel free to point me to it if I've missed anything.

Why isn't the implicit line continuation inside parentheses sufficient?

>From my 3.9 REPL:

>>> x
'TEST:TESTING:TEST3\n'
>>> y = x.rstrip("\n").split(":")[0].lower()
>>> y
'test'
>>> z = (x.rstrip("\n")
...      .split(":")[0]
...      .lower()
...     )
>>> z
'test'
>>>

This already works today, and every style guide with an opinion that
I'm aware of prefers this implicit line continuation over the explicit
backslash you demonstrate anyway.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/JFOEB2RY4CWTO4ZM3HTB574DROZRWPTK/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to