syntaxe des boucles et des "lists comprehensions" [résolu] - Python - Programmation
Marsh Posté le 27-03-2013 à 21:22:38
Parce que c'est un ajout de syntaxe qui a été considéré sans grand intérêt: tu peux écrire
Code :
|
ou bien
Code :
|
Marsh Posté le 27-03-2013 à 21:27:34
Merci Masklinn; en fait, je pensais qu'autoriser "ma" syntaxe découlait naturellement des lists comprehensions, et que c'était le même code du parser et du générateur de bytecode qui gérait l'un et l'autre.
Marsh Posté le 27-03-2013 à 21:48:20
suizokukan a écrit : Merci Masklinn; en fait, je pensais qu'autoriser "ma" syntaxe découlait naturellement des lists comprehensions, et que c'était le même code du parser et du générateur de bytecode qui gérait l'un et l'autre. |
Bah non. Une boucle for classique n'est pas une expression, n'a pas de filtre et ne passe pas par du bytecode dédié (LIST_APPEND, sans même parler des genexpr). Le bytecode a des similarités (mais pas identique de loin[0]), mais le parser est complètement différent et les deux constructions sont à des endroits sans rapports dans la grammaire
[0]
>>> dis.dis(lambda: [e for e in mylist if e is not None]) |
>>> def f(): |
Marsh Posté le 27-03-2013 à 22:08:37
Merci Masklinn, c'est très clair en effet : je ne pensais que la différence était aussi grande.
Marsh Posté le 27-03-2013 à 21:18:23
Bonsoir,
puisqu'il est possible d'écrire en Python :
je me demandais récemment pourquoi on ne pouvait écrire :
Ou bien, qu'est-ce qui se rapprocherait le plus de l'exemple précédent ?
Merci !
Message édité par suizokukan le 27-03-2013 à 21:48:15
---------------
rule #1 : trust the python