On Mon, 08 Jul 2013 11:39:21 +0100, Joshua Landau wrote: > On 8 July 2013 00:32, Xue Fuqiao <xfq.f...@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 -- http://mail.python.org/mailman/listinfo/python-list