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 _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com