def key(): print 'key'
def val(): print 'val'
{key() : val()}
imprime val, key
, c'est-à-dire que la valeur est évaluée en premier. Ce comportement est-ilOrdre d'évaluation des littéraux de dictionnaire
- cohérente entre les versions et les implémentations Python?
- documenté n'importe où? (http://docs.python.org/2/reference/expressions.html#dictionary-displays dit rien)
Peut être est-ce la raison: votre code est équivalent à 'dic touche [()] = val()'. Et dans l'opérateur d'affectation, le RHS est toujours évalué en premier, de sorte que "val" est imprimé en premier, puis LHS est exécuté. –