您的位置:

Python中len()的实现原理

一、基本介绍

Python中len()函数是用于获取对象(字符串、列表、元组等)长度或元素个数的函数,返回值为一个整数。

常用方式:len(object)

其中,object为要获取长度或元素个数的对象

二、len()的内部机制

在Python中,所有对象都有一个内置函数__len__(),这个函数主要是用于返回对象的长度或元素个数。len()函数实际上是通过调用__len__()函数来获取对象长度或元素个数的。

以下是一个例子,展示了字符串的__len__()函数的实现方式:

>>> s = "hello world"
>>> s.__len__()
11

在调用len()函数时,实际上是调用了对象的__len__()函数,下面的代码是len()函数的实现方式:

def len(object):
    return object.__len__()

三、内置类型对象的__len__()函数实现

在Python中,所有内置的类型对象(str、list、tuple等)都实现了__len__()函数,下面是内置对象的__len__()函数的实现方式:

1.字符串

字符串的__len__()函数实际上是返回字符串的字符个数,其中空格也算一个字符。

class str(object):
    def __len__(self):
        return self._length

2.列表

列表的__len__()函数实际上是返回列表元素的个数。下面是列表的__len__()函数的实现方式:

class list(object):
    def __len__(self):
        return self._len

3.元组

元组的__len__()函数实际上是返回元组元素的个数。下面是元组的__len__()函数的实现方式:

class tuple(object):
    def __len__(self):
        return self._len

4.字典

字典的__len__()函数实际上是返回字典中键值对的个数。下面是字典的__len__()函数的实现方式:

class dict(object):
    def __len__(self):
        return len(self._keys)

5.集合

集合的__len__()函数实际上是返回集合元素的个数。下面是集合的__len__()函数的实现方式:

class set(object):
    def __len__(self):
        return len(self._data)

四、自定义类型对象的__len__()函数实现

在自定义类型对象中,可以通过实现__len__()函数来获取对象的长度或元素个数,下面是自定义类型对象的__len__()函数实现方式:

class MyClass:
    def __init__(self):
        self._data = [1, 2, 3, 4, 5]

    def __len__(self):
        return len(self._data)

mc = MyClass()
print(len(mc)) # 5

五、总结

通过以上的讲解,我们可以知道len()函数的实现原理是通过调用对象的__len__()函数来获取长度或元素个数的。在Python中,所有内置类型的对象都实现了__len__()函数,如果需要获取自定义类型对象的长度或元素个数,只需要在自定义类型中实现__len__()函数即可。