在 Python 中確定物件可迭代性
迭代元素序列是 Python 中的基本操作。要確定一個物件是否支援迭代,人們可能想知道是否存在像 isiterable 這樣簡單的方法。
hasattr(myObj, '__iter__')
中提到的解決方案問題 hasattr(myObj, '__iter__') 檢查 __iter__ 方法是否存在 目的。雖然它適用於大多數序列類型,但在處理字串時,它在 Python 2 中存在不足。
Iter 內建函數
更簡單的方法是使用 iter內建功能。它嘗試呼叫物件的 __iter__ 方法或字串情況下的 __getitem__ 方法,使其適用於更廣泛的迭代。
try: some_object_iterator = iter(some_object) except TypeError as te: print(some_object, 'is not iterable')
鴨子打字
另一種 Pythonic 方法是採用鴨子類型。這涉及假設一個物件是可迭代的,如果不是,則處理異常。 EAFP(比許可證更容易請求寬恕)風格通常用於此目的:
try: _ = (e for e in my_object) except TypeError: print(my_object, 'is not iterable')
集合模組
Python集合模組提供抽象基類來檢查用於類別或實例的可迭代性。然而,這些類別並沒有涵蓋所有情況,特別是使用 __getitem__ 方法的可迭代物件。
from collections.abc import Iterable if isinstance(e, Iterable): # e is iterable
以上是如何在 Python 中可靠地檢查物件是否可迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!