Top and Bottom Values [PEP: 326]

Antoon Pardon apardon at forel.vub.ac.be
Thu Sep 28 03:41:36 EDT 2006


On 2006-09-27, Tim Chase <python.list at tim.thechases.com> wrote:
>>> To begin with this already fails:
>>>
>>>>>> for i in xrange(Top):
>>> ...   print i
>> 
>>     	What do you expect this to do?  Loop forever?
>
> Perhaps the infinite loop should take half as long as
>
> >>> for i in xrange(Bottom, Top): print i
>
> Though then the values when the loop first starts are kinda 
> ambiguous... :)
>
> Given the limits of xrange:
>
> >>> for i in 
> xrange(10000000000000000000000000,10000000000000000000000009):
> ...	print i
>
> Traceback (most recent call last):
>    File "<stdin>", line 1, in ?
> OverflowError: long int too large to convert to int
>
> I suspect one would have an overflow condition to help break you 
> out of the loop...

Sometime people want an infinite loop.

Personnaly I don't see why I should get an overflow error while
doing this:

  import sys
  for i in xrange(sys.maxint - 4, sys.maxint + 5):
    pass

I remember in the days when longs and ints were being unified,
that some people complained, because without this unification,
a loop in which an int counter was incremented would necessarily
end when the counter overflowed and this was a good indication
there was a bug somewhere. The response to that was, that you
could never foresee how your algorithm would be used and that
maybe someday someone found a good way to use your algoritm
where the counter would go beyond sys.maxint.

Following this logic there is no reason why xrange should be
limited to ints.

> >>> try:
> ...	for i in range(Top):
> ...		print i
> ... except OverflowError:
> ...	print 'done!'
>
> ...and then you time your instruction cycles and your disk reads 
> so they fall under the read-head at just the right time... [*]
>
> [*] http://www.catb.org/jargon/html/story-of-mel.html

There is no reason to compare what I propose to the story of melvin.
All behaviour of the objects would be well defined and could be
easily understood to those who would read the documentation.

-- 
Antoon Pardon



More information about the Python-list mailing list