osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Python indentation (3 spaces)


On 2018-10-15 12:06:06 +0100, Rhodri James wrote:
> On 14/10/18 09:06, Peter J. Holzer wrote:
> > If everybody used tabs, why would anyone care about your tab width?
> > Unless they look over your shoulder while you are typing, they won't
> > even know how wide your tabs are.
> 
> If you used two-space tab stops and I used (the normal :-) eight,
> comfortable indentations for you would rapidly become uncomfortably large
> indentations for me.  I'd care about that.

Buy a bigger monitor :-).

On a more serious note, I think the number of indentation levels should
be fairly low regardless of their width. If someone uses 2-space
indentation so they can fit 20 nested ifs, the other programmers should
complain during code review: Not because the lines are too long but
because the nesting is too deep.

> I'd also care if you used spaces to make sub-tab stop adjustments to
> line up appropriate text (inside brackets, for example).

I'm not sure what a "sub-tab stop adjustment" is. I think that for the
"1 tab per indentation level" style, tabs would be used only for
indentation, nothing else, and preferably only for block-level
indentation.

So a python function might look like this with 8 spaces per tab:

def?foo(a_parameter,?another_parameter,
????????an_optional_parameter=DEFAULT_VALUE,
????????another_optional_parameter=None
????):
       ?x?=?a_parameter
       ?a?=?[
       ?????{?'x':?1,???'y':?2,????'z':?3?},
       ?????{?'x':?0.4,?'y':?3.14,?'z':?1.618?},
       ?]
       ?if?another_optional_parameter:
       ?       ?r?=?(
       ?       ?????(another_optional_parameter?*?a[0]['x']?+?another_parameter?*?b[0]['y'])
       ?       ?????/
       ?       ?????(a[1]['x']?+?a[1]['y']?+?a[1]['z'])
       ?       ?)
       ?else:
       ?       ?r?=?another_parameter?*?0
       ?return?r

(I'using     ? to represent a tab here and ? to represent a space.)

And like this with 2 spaces per tab:

def?foo(a_parameter,?another_parameter,
????????an_optional_parameter=DEFAULT_VALUE,
????????another_optional_parameter=None
????):
 ?x?=?a_parameter
 ?a?=?[
 ?????{?'x':?1,???'y':?2,????'z':?3?},
 ?????{?'x':?0.4,?'y':?3.14,?'z':?1.618?},
 ?]
 ?if?another_optional_parameter:
 ? ?r?=?(
 ? ?????(another_optional_parameter?*?a[0]['x']?+?another_parameter?*?b[0]['y'])
 ? ?????/
 ? ?????(a[1]['x']?+?a[1]['y']?+?a[1]['z'])
 ? ?)
 ?else:
 ? ?r?=?another_parameter?*?0
 ?return?r

Note that everything still lines up nicely.

	hp (a four spaces per indentation level guy)

-- 
   _  | Peter J. Holzer    | we build much bigger, better disasters now
|_|_) |                    | because we have much more sophisticated
| |   | hjp at hjp.at         | management tools.
__/   | http://www.hjp.at/ | -- Ross Anderson <https://www.edge.org/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20181015/2c99470c/attachment.sig>