Si la fourchette() est un générateur en Python 3.3, pourquoi je ne peux pas appel à next() sur une plage?

Peut-être que j'ai été victime de la désinformation sur le web, mais je pense que c'est plus probablement que j'ai mal compris quelque chose. Selon ce que j'ai appris jusqu'à présent, range() est un générateur, et les générateurs peuvent être utilisés comme des itérateurs. Toutefois, ce code:

myrange = range(10)
print(next(myrange))

me donne cette erreur:

TypeError: 'range' object is not an iterator

Ce qui me manque ici? Je m'attendais à ce genre d'imprimer 0, et pour passer à la valeur suivante dans myrange. Je suis nouveau sur Python, donc s'il vous plaît accepter mes excuses pour la non question de base, mais je ne pouvais pas trouver une bonne explication n'importe où ailleurs.

  • Voir stackoverflow.com/q/13054057/395760 pour la distinction entre les itérateurs et les choses que vous pouvez parcourir dans un for boucle.
  • Serait-il correct de dire que les générateurs sont iterables, mais pas les itérateurs?
  • Iterables sont des objets qui iter peut être utilisé pour obtenir un itérateur. Les itérateurs sont des objets que l'on peut parcourir par le biais de l'aide next. Générateurs est de la catégorie des itérateurs (générateur de fonctions et un générateur d'expressions). Au moins, c'est ce que je pense...
InformationsquelleAutor Jeff | 2012-10-26