Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有人能解释len()函数是如何在内部工作的吗?_Python_Python 3.x_List - Fatal编程技术网

Python 有人能解释len()函数是如何在内部工作的吗?

Python 有人能解释len()函数是如何在内部工作的吗?,python,python-3.x,list,Python,Python 3.x,List,我感兴趣的是len()函数如何在python3内部工作(如何实现) 有人能帮我吗?没那么有趣。它只调用对象的\uuuu len\uuu方法 如果您询问内置列表中的具体实现,那么它就更不有趣了列表实例在属性中保持其长度(至少在CPython中),以节省迭代的需要(因此使len(list)成为O(1)而不是O(n)操作) CPython: static Py_ssize_t list_length(PyListObject *a) { return Py_SIZE(a); } Py_SIZ

我感兴趣的是
len()
函数如何在python3内部工作(如何实现)


有人能帮我吗?

没那么有趣。它只调用对象的
\uuuu len\uuu
方法

如果您询问内置
列表中
的具体实现,那么它就更不有趣了<代码>列表
实例在属性中保持其长度(至少在CPython中),以节省迭代的需要(因此使
len(list)
成为O(1)而不是O(n)操作)

CPython:

static Py_ssize_t
list_length(PyListObject *a)
{
    return Py_SIZE(a);
}
Py_SIZE
定义为宏

#定义Py_大小(ob)(_PyVarObject_CAST(ob)->ob大小)
因此,
len(list)
只是获取底层C对象/结构的
ob_size
属性。

是开源软件。开悟吧!