一、基本介紹
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__()函數即可。
原創文章,作者:BSFC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145172.html