A small question about PEP 8
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Mon Jul 8 08:02:26 EDT 2013
On Mon, 08 Jul 2013 11:39:21 +0100, Joshua Landau wrote:
> On 8 July 2013 00:32, Xue Fuqiao <xfq.free at gmail.com> wrote:
>> Hi all,
>>
>> (English is not my native language; please excuse typing errors.)
>>
>> I'm a Python newbie and just started reading PEP 8. PEP says:
>>
>> -----------------------------------------------------------------------
>> |The closing brace/bracket/parenthesis on multi-line constructs may
>> |either line up under the last item of the list, as in: |
>> |my_list = [
>> | 1, 2, 3,
>> | 4, 5, 6,
>> | ]
>> |result = some_function_that_takes_arguments(
>> | 'a', 'b', 'c',
>> | 'd', 'e', 'f',
>> | )
>> -----------------------------------------------------------------------
>>
>> I think the last item in my_list/result is 6/'f', respectively. So why
>> doesn't the bracket/paren line up _under_ the last item? ISTM the code
>> isn't consistent with the description.
>>
>> I have searched the archive of c.l.p and the web, but nothing helped.
>> Can anyone point me in the right direction?
>
> You will grow to be a wonderful pedant. What it means is that the
> indentation will match the last one.
That's obvious from the example given, but that's nothing like the
description given.
Imagine:
>
> """
> a_wonderful_set_of_things = {
> bannanas_made_of_apples,
> chocolate_covered_horns,
> doors_that_slide,
> china_but_on_the_moon,
> buffalo_with_windy_hair,
> not_missing_an_end_brace
> """ยน
>
> Now, there are several places you can put the end brace. You can (be a
> massive fool and) put it after the last item:
>
> """
> a_wonderful_set_of_things = {
> ...,
> not_missing_an_end_brace}
> """
Well, call me a fool then, because when I have code that extends over
*one* additional line, I prefer that:
raise ValueError(
"Some error message too long to fit on the above line")
rather than:
raise ValueError(
"Some error message too long to fit on the above line"
)
> You can also (be a fool and) put it at the same *indentation*:
>
> """
> a_wonderful_set_of_things = {
> ...,
> not_missing_an_end_brace
> }
> """
Call me a fool again, since I prefer this when there are more than one
additional line. At least this time I'm in good company, since that's
recommended by PEP 8.
> Or you can (be sane) and put it at no indentation:
>
> """
> a_wonderful_set_of_things = {
> ...,
> not_missing_an_end_brace
> }
> """
I consider that the least aesthetically pleasing, and also rather awkward:
some_result = some_function(
arg1, arg2, arg3, arg4,
[item1, item2, item3, item4,
item5, item6, item7,
item8, item9, item10,
],
arg6, key=spam, word=eggs,
extras=None, foo=bar,
)
--
Steven
More information about the Python-list
mailing list