[Python-Dev] [Python-checkins] peps: Add rules for indenting continuation lines.

Guido van Rossum guido at python.org
Thu Jun 2 21:01:04 CEST 2011


Bingo. That's why. (Though you are missing some colons in your examples. :-)

--Guido

On Thu, Jun 2, 2011 at 11:50 AM, Glenn Linderman <v+python at g.nevcal.com> wrote:
> On 6/2/2011 11:19 AM, Barry Warsaw wrote:
>
> On Jun 02, 2011, at 08:09 PM, guido.van.rossum wrote:
>
> +    Continuation lines should align wrapped elements either vertically
> using
> +    Python's implicit line joining inside parentheses, brackets and braces,
> +    or using a hanging indent of double your code indention, in which case
> +    there should be no argument on the first line. For example:
> +
> +    Yes:  # Aligned with opening delimiter
> +          foo = long_function_name(var_one, var_two,
> +                                   var_three, var_four)
> +
> +          # Double code indention for hanging indent; nothing on first line
> +          foo = long_function_name(
> +                  var_one, var_two, var_three,
> +                  var_four)
> +
> +    No:   # Stuff on first line forbidden
> +          foo = long_function_name(var_one, var_two,
> +              var_three, var_four)
> +
> +          # 2-space hanging indent forbidden
> +          foo = long_function_name(
> +            var_one, var_two, var_three,
> +            var_four)
>
> As I mentioned to Guido, I'm not sure where the double-indent recommendation
> comes from, but it's entirely possible I missed that discussion.  I agree
> with
> the recommendations, but think a single-indentation level looks fine.  E.g.
>
>         return dict(
>             fqdn_listname=member.mailing_list,
>             address=member.address.email,
>             role=role,
>             user=path_to('users/{0}'.format(member.user.user_id)),
>             self_link=path_to('members/{0}'.format(member.member_id)),
>             )
>
> or
>
>     return b'{0}://{1}:{2}/{3}/{4}'.format(
>         ('https' if as_boolean(config.webservice.use_https) else 'http'),
>         config.webservice.hostname,
>         config.webservice.port,
>         config.webservice.api_version,
>         (resource[1:] if resource.startswith('/') else resource),
>         )
>
> -Barry
>
> One place a double indent is extremely nice is for lines that initiate a new
> indentation, but are themselves continued:
>
> if some_function(
>         Some,
>         Parameters,
>         To,
>         Pass,
>         )
>     If_True_Operations()
>
> is much more readable than:
>
> if some_function(
>     Some,
>     Parameters,
>     To,
>     Pass,
>     )
>     If_True_Operations()
>
>
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/guido%40python.org
>
>



-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-Dev mailing list