一、基本介绍
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__()函数即可。