Maison >développement back-end >Tutoriel Python >Comment puis-je vérifier de manière fiable si un objet est itérable en Python ?

Comment puis-je vérifier de manière fiable si un objet est itérable en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 01:31:13428parcourir

How Can I Reliably Check if an Object is Iterable in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn