[Python-Dev] None as slice params to list.index() and tuple.index() (original) (raw)

Petri Lehtinen petri at digip.org
Sun Nov 6 08:49:27 CET 2011


list.index() and list.tuple() don't currently accept None as slice parameters, as reported in http://bugs.python.org/issue13340. For example:

[1, 2, 3].index(2, None, None) Traceback (most recent call last): File "", line 1, in TypeError: slice indices must be integers or None or have an index method

The error message of list.index() and tuple.index() (as a consequence of using _PyEval_SliceIndex() for parsing arguments) indicates that None is a valid value.

Currently, find(), rfind(), index(), rindex(), count(), startswith() and endswith() of str, bytes and bytearray accept None. Should list.index() and tuple.index() accept it, too?

I'm bringing this up because I already committed a fix that enables the None arguments, but Raymond pointed out that maybe they shouldn't accept None at all. I also committed the fix to 3.2 and 2.7 based on discussion in http://bugs.python.org/issue11828#msg133532, in which Raymond says that for string functions, this can be considered a bug because the exception's error message makes a promise that None is accepted.

Petri



More information about the Python-Dev mailing list