Maison  >  Article  >  développement back-end  >  Programmation Python : objets itérables et itérateurs (Iterable & Iterator)

Programmation Python : objets itérables et itérateurs (Iterable & Iterator)

王林
王林avant
2023-04-20 12:19:061307parcourir

Avant-propos

En programmation Python, le traitement des boucles est inévitable, ce qui implique deux concepts importants, à savoir les objets itérables et les itérateurs (Iterable & Iterator). Je présenterai ce sujet d'itération en deux à trois parties pour vous aider à le comprendre et à l'appliquer dans la programmation réelle. Cet article est le premier.

Programmation Python : objets itérables et itérateurs (Iterable & Iterator)

Objets itérables

Les objets itérables (Iterable) font référence à des objets qui peuvent renvoyer un membre à la fois. Des exemples d'objets itérables incluent tous les types de séquence (tels que list, str et tuple) et certains types non-séquence tels que dict, les objets fichier et tout objet d'une classe que vous définissez qui implémente la méthode __iter__() ou __getitem__ La séquence sémantique spécifiée par la méthode () - et le protocole d'itération (voir ici pour plus de détails : ).

Les objets itérables peuvent être utilisés dans des boucles for et à d'autres endroits où des séquences sont requises (comme zip(), map(), filter()...). Lorsqu'un objet itérable est passé en paramètre à la fonction intégrée iter(), il renvoie un itérateur de cet objet. Cet itérateur ne convient que pour le parcours unique d'un ensemble de valeurs. Lorsque vous travaillez avec des objets itérables, vous n'avez généralement pas besoin d'appeler iter() ou de gérer vous-même l'objet itérateur. Cela se fait automatiquement à l'aide d'une instruction for, qui crée une variable temporaire sans nom utilisée pour contenir l'itérateur pendant la boucle.

En bref, un objet itérable est tout objet de classe qui implémente la méthode __iter__() ou la méthode __getitem__().

Iterator

Iterator (Iterator) fait référence à un objet qui représente un flux de données. L'appel répété de la méthode __next__() de l'itérateur (ou la transmission à la fonction intégrée next()) renverra des éléments consécutifs dans le flux. Lorsqu’aucune donnée n’est disponible, l’exception StopIteration est levée. À ce stade, l’objet itérateur est épuisé et tout appel ultérieur à sa méthode __next__() déclenchera à nouveau StopIteration. Les itérateurs doivent avoir une méthode __iter__() qui renvoie l'objet itérateur lui-même, donc chaque itérateur est également itérable et peut être utilisé dans la plupart des endroits acceptant d'autres objets itérables.

En bref, un itérateur est un objet de flux de données qui implémente deux méthodes de protocole itérateur __next__() et __iter__().

Une exception notable est le code qui tente d'itérer plusieurs fois (en utilisant le même itérateur plusieurs fois). Un objet conteneur (tel qu'une liste) génère un nouvel itérateur à chaque fois qu'il est transmis à la fonction iter() ou utilisé dans une boucle for. Essayer cela avec un itérateur renverra simplement l'objet itérateur épuisé utilisé lors de l'itération précédente, le faisant ressembler à un conteneur vide. Évitez donc cette situation lors de l’écriture du code.

Fonction iter

De plus, vous devez comprendre que la fonction intégrée iter() (qui appelle la méthode __iter__() en coulisses) renvoie un objet itérateur. Donc on peut dire. Un itérable est un objet qui renvoie un itérateur.

Afin de mieux comprendre les itérateurs et les objets itérables, je suivrai avec des explications et des exemples de code pour présenter davantage le contenu clé suivant :

  • Protocole et boucles d'itérateur
  • Implémentation d'itérateurs personnalisés.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer