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

Glenn Linderman v+python at g.nevcal.com
Thu Jun 2 20:50:05 CEST 2011


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()



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20110602/65859933/attachment.html>


More information about the Python-Dev mailing list