Maison >développement back-end >Tutoriel Python >Comment puis-je vérifier de manière fiable si un objet est itérable en Python ?
Détermination de l'itérabilité des objets en Python
Itérer sur une séquence d'éléments est une opération fondamentale en Python. Pour déterminer si un objet supporte l'itération, on peut se demander s'il existe une méthode simple comme isiterable.
hasattr(myObj, '__iter__')
La solution mentionnée dans la question, hasattr(myObj, '__iter__'), vérifie la présence de la méthode __iter__ dans l'objet. Bien que cela fonctionne pour la plupart des types de séquences, il ne fonctionne pas dans Python 2 lors de la gestion des chaînes.
Fonction intégrée Iter
Une approche plus infaillible consiste à utiliser l'iter fonction intégrée. Il tente d'appeler la méthode __iter__ de l'objet ou la méthode __getitem__ dans le cas de chaînes, ce qui la rend adaptée à une gamme plus large d'itérables.
try: some_object_iterator = iter(some_object) except TypeError as te: print(some_object, 'is not iterable')
Duck Typing
Une autre approche pythonique consiste à adopter le typage canard. Cela implique de supposer qu'un objet est itérable et de gérer les exceptions si ce n'est pas le cas. Le style EAFP (Easier to Ask Forgiveness than Permission) est souvent utilisé pour cela :
try: _ = (e for e in my_object) except TypeError: print(my_object, 'is not iterable')
Module Collections
Le module Python collections propose des classes de base abstraites à vérifier pour l’itérabilité de la classe ou de l’instance. Cependant, ces classes ne couvrent pas tous les cas, notamment les itérables avec les méthodes __getitem__.
from collections.abc import Iterable if isinstance(e, Iterable): # e is iterable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!