Lyd*_*Lyd 5 python python-internals
Python有许多内置函数,len()是其中之一.
返回对象的长度(项目数).参数可以是序列(例如字符串,字节,元组,列表或范围)或集合(例如字典,集合或冻结集).
如果集合和序列是对象,它们可以保存一个length可以在每次更改时更新的属性.访问此属性将是检索集合长度的快速方法.
另一种方法是迭代集合并计算动态项目的数量.
怎么len()计算长度?通过迭代或属性访问?其中一个,没有,两个,其他方法?
Python内置集合在属性中缓存长度.使用len()不会迭代所有元素来计算它们,不.
将长度保持为属性是便宜且易于维护的.鉴于Python内置集合类型被广泛使用,他们不这样做是不明智的.
具有长度的Python内置类型通常构建在PyObject_VAR_HEAD结构的顶部,结构包括ob_size条目.的Py_SIZE宏然后可以被用来实现该object.__len__方法(例如,PySequenceMethods.sq_length在C-API在插槽).例如,请参阅listobject.c实现list_length.