Python 列表对象的索引方法不';t accepr可选参数start

Python 列表对象的索引方法不';t accepr可选参数start,python,python-3.x,list,indexof,Python,Python 3.x,List,Indexof,我有一个包含一些可重复元素的列表。 我想从特定位置(而不是从起点)开始查找元素的索引。 所以我对列表对象使用了索引方法。根据文件,它有可选的启动和停止参数 我使用的代码示例: lst = [5, 1, 2, 3, 4, 5, 6, 7] index_5 = lst.index(5, start=2) print(index_5) 当我运行这段代码时,我得到一个异常,索引方法并没有参数start。有什么问题吗 Traceback (most recent call last): File "

我有一个包含一些可重复元素的列表。
我想从特定位置(而不是从起点)开始查找元素的索引。
所以我对列表对象使用了索引方法。根据文件,它有可选的启动和停止参数

我使用的代码示例:

lst = [5, 1, 2, 3, 4, 5, 6, 7]
index_5 = lst.index(5, start=2)
print(index_5)
当我运行这段代码时,我得到一个异常,索引方法并没有参数start。有什么问题吗

Traceback (most recent call last):
  File "D:/Misc.py", line 2, in <module>
    index_5 = lst.index(5, start=2)
TypeError: index() takes no keyword arguments
根据for
索引
,参数
start
仅缩小搜索空间:

可选参数start和end在切片中解释为 符号和用于将搜索限制到特定的子序列 在名单上。返回的索引是相对于开始计算的 而不是起始参数

错误旁边写着no
关键字
参数,因此应该使用
位置
参数

但是builtins.py中的签名被指定为def索引(self、value、start=None、stop=None),所以我希望它被命名为parameters

看这个。它说:

由于PythonC级API的开发方式,许多内置函数和方法实际上没有参数名称。即使文档调用参数default,函数也不会将名称default识别为引用可选的第二个参数。您必须按位置提供参数

以前的文档在仅位置参数方面很差,但在现代Python上,它们正在改进。密钥信息是签名中看起来不合适的信息:

index(value, start=0, stop=9223372036854775807, /)
                                                ^ This is not a typo!
这意味着正斜杠之前的所有参数都是位置参数,不能通过关键字传递

函数参数列表中的斜杠表示其前面的参数仅为位置参数。仅位置参数是没有外部可用名称的参数。在调用只接受位置参数的函数时,参数仅根据其位置映射到参数

试试这个:

lst.index(5,2)
至于解释,也可以解释一下:

许多内置函数只使用METH_VARARGS,这意味着它们不支持关键字参数。“len”甚至更简单,它使用了一个选项METH_O,这意味着它将获得一个对象作为参数。这使得代码非常简单,并且可能会对性能产生轻微的影响


这些参数可能只是位置参数。你试过索引(5,2)吗?是的,你是对的。非常感谢。这就是为什么。但是builtins.py中的签名被指定为
def index(self,value,start=None,stop=None)
,所以我希望它是命名参数。@AleksLee,
start
stop
似乎是用于优化列表搜索的,但不要修改
return
值您引用的文档的哪一部分?将其描述为
s.index(x[,i[,j]])
,因此没有提及关键字参数。如果您正在引用,请注意采用位置参数的方法之间的语法差异,如
list。index(x[,start[,end]])
其中
start
end
只是值的占位符,还有那些带有关键字参数的,看起来像:
list.sort(key=None,reverse=False)
lst.index(5,2)