[Python-ideas] 80 character line width vs. something wider

Lie Ryan lie.1296 at gmail.com
Thu May 21 19:33:56 CEST 2009


Raymond Hettinger wrote:
> 
> [Lie Ryan]
>> This is how I will write program if we have 160 character limit:
>>
>> def foo(f, a, b, c):
>>     return [[((f(x, y) * i, i) if i % 2 else 0) for i, x in 
>> enumerate(a) if f(y, x) == a + x] for y in [c(z) for z in range(a, a * 
>> b + c, c)]]
>>
>> except there will be no line breaks...
>>
>> I love list comprehension so much that I often _unconsciously_ write a 
>> very complex list comprehensions. 80-character convention acts as a 
>> reminder to consider refactoring.
> 
> that makes sense to because your example starts close to the left margin.
> What I'm more concerned about is lines that start many tabs deep.
> Those become awkward, causing you to wrap them differently than
> if they were not tabbed.  So, I think the 80 char limit should be relaxed
> only when there is a bunch of whitespace to the left.  Your cues for
> refactoring  and coding style should not depend on the initial level of 
> indentation.

On contrary, if the left margin causes me to struggle to keep lines 
below 80-char, it is an indication that the whole class/function could 
benefit from refactoring.

It is rarely necessary to need more than 2 levels of initial (function 
level) indentation or 3 if you used closure: e.g.:

class
     def
         def (closure)

and any function that have more than another 2-3 level is an indication 
that it needs refactoring.

class
     def
         with
             for
                 if

So in total, 3-5 levels are the maximum in any sane code. To me, 3-5 
level is not that deep for 80-char to become a hindrance.

Anyway, it seems people keep forgetting that PEP 8 is a guideline, not a 
syntax. I usually keep lines below 80, but I don't mind breaking them 
now and then if I think it is justified.




More information about the Python-ideas mailing list