Python 可迭代性偵測:超越iter 與Duck-Typing
確定物件是否可迭代在Python 中迭代至關重要編程。雖然有檢查 iter 方法等解決方案,但它們可能並不全面。本文探討了驗證可迭代性的替代方法,確保萬無一失的實作。
1.異常處理:
異常處理允許優雅地偵測不可迭代的物件。 iter() 內建函數檢查 iter 和 getitem 方法,包括字串(在 Python 3 及更高版本中)。使用 try/ except 區塊,可以處理 TypeError 異常來識別不可迭代的物件。
try: some_object_iterator = iter(some_object) except TypeError as te: print(some_object, 'is not iterable')
2.使用EAFP 進行鴨子類型:
EAFP(請求寬恕比請求更容易)是一種Pythonic 方法,它假定可迭代性並優雅地處理異常。透過檢查物件的迭代能力,可以避免顯式類型檢查。
try: _ = (e for e in my_object) except TypeError: print(my_object, 'is not iterable')
3.抽象基類:
集合模組提供了抽象基類,可以檢查特定功能。 Iterable 就是這樣一個可以確定可迭代性的類別。但是,它可能不適合透過 __getitem__ 迭代的物件。
from collections.abc import Iterable if isinstance(e, Iterable): # e is iterable
以上是如何可靠地檢測 Python 中的可迭代物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!