Grouping code by indentation - feature or ******?

Jacob Lee jelee2 at
Sun Mar 27 09:00:34 CEST 2005

On Sat, 26 Mar 2005 10:02:13 +0100, Javier Bezos wrote:

> "Tim Tyler" <tim at .org> escribió en el mensaje
> news:IDwEr6.K2u at
>> What do you guys think about Python's grouping of code via indentation?
>> Is it good - perhaps because it saves space and eliminates keypresses?
>> Or is it bad - perhaps because it makes program flow dependent on
>> invisible, and unpronouncable characters - and results in more
>> manual alignment issues by preventing code formatters from managing
>> indentation?
> I particularly hate it, but Python has lots of good
> things which compesate that (another annoying point
> of Python are slices -- mine are always off by 1).
> I always write explicitly ends as #end, so that I
> can reorganice the code easily if necessary. Maybe
> in the future, when Ruby matures, I could change
> my mind, but currently Python is still my favourite
> scripting language (as formerly was Tcl).

About slices:

I agree that Python's slice boundaries (some_list[a:b] being all elements
with a <= index < b) are counterintuitive at first. But this method does
satisfy some handy properties, the first of which being:
  l[:n] + l[n:] = l
Secondly, the range() function behaves identically to slices, meaning that
  for i in range(10):
will iterate 10 times, and
  for i in range(len(l)):
will iterate over the indices of the sequence l.

If you had l[a:b] be inclusive on both a and b (instead of inclusive on a
and exclusive on b), you would have to be adding and subtracting one in
all of these examples, leading that much more easily to off-by-one errors.

A digression: my data structures teacher (in c++) has a vector class that
allows you to set upper and lower bounds, and he combines this with for
loops that usually start at one but don't always. I doubt he was trying to
get this point across, but the lesson I've learned is to always start at
zero and count to less than the length of the list (in c, the idiom is
for (i = 0; i < length; i++)). Believe me that any other way will only
lead to trouble! :-)

Jacob Lee
jelee2 at |

More information about the Python-list mailing list