[Python-Dev] sliceobject Py_None step inquiry

Joseph Armbruster josepharmbruster at gmail.com
Wed Dec 12 03:23:18 CET 2007


I was playing around with sliceobject.c this evening and noticed the following 
behavior.  If you slice with a step 0, you receive a ValueError but when you 
slice with a step of None, the step is set to 1.  As an example, observe the 
following interactive session:

 >>> a = [1,2,3,4,5,6]
 >>> b = slice(0,5,None)
 >>> a[b]
[1, 2, 3, 4, 5]
 >>> b = slice(0,5,0)
 >>> a[b]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: slice step cannot be zero
 >>>

Within the code, it looks like Py_None performs a step of 1.  Does it make 
sense to create a patch so that None and 0 behave the same in this respect?

 >>> a = [1,2,3,4,5,6]
 >>> b = slice(0,5,None)
 >>> a[b]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: slice step cannot be None
 >>> b = slice(0,5,0)
 >>> a[b]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
ValueError: slice step cannot be zero
 >>> b = slice(0,5)
 >>> a[b]
[1, 2, 3, 4, 5]
 >>>


Joe


More information about the Python-Dev mailing list