La question présuppose que l'appel de foo() n temps est un a priori chose nécessaire. D'où vient N ? C'est la longueur de quelque chose d'itérable ? Ensuite, il faut itérer sur l'itérable. Au fur et à mesure que je me familiarise avec Python, je constate que je n'utilise que peu ou pas de valeurs arbitraires ; il y a une signification plus importante derrière vos n qui s'est perdue quand elle est devenue un nombre entier.
Plus tôt dans la journée, je suis tombé sur le document provocateur de Nicklaus Wirth pour IEEE Computer intitulé Les bonnes idées - De l'autre côté du miroir (archivé version pour les futurs lecteurs). Dans la section 4, il apporte un éclairage différent sur les constructions de programmation que tout le monde (y compris lui-même) considère comme acquises mais qui présentent des défauts d'expression :
"La généralité de l'Algol for
La déclaration aurait dû être un avertissement d'avertissement à tous les futurs concepteurs pour toujours garder l'objectif principal d'une construction et de se méfier des généralités exagérées. généralité et de complexité exagérées, qui peuvent facilement devenir contre-productives."
L'algol for
est équivalent à celui de C/Java for
il en fait trop. Cet article est une lecture utile, ne serait-ce que parce qu'il nous pousse à ne pas prendre pour acquis tout ce que nous faisons si facilement. Donc peut-être qu'une meilleure question est "Pourquoi auriez-vous besoin d'une boucle qui s'exécute un nombre arbitraire de fois ?".