Tenir compte de ces expressions... s'il vous Plaît être patient... la liste est bien LONGUE...
(Note: certaines expressions sont répétées -- c'est juste pour présenter un "contexte")
a, b = 1, 2 # séquence simple affectation a, b = ['vert', 'bleu'] # liste asqignment a, b = 'XY' # affectation de chaîne a, b = range(1,5,2) # un objet iterable fera # séquence imbriquée affectation (a,b), c = "XY", "Z" # a = 'X', b = Y, c = 'Z' (a,b), c = "XYZ" # ERREUR -- trop de valeurs pour décompresser (a,b), c = "XY" # ERREUR -- besoin de plus de 1 valeur pour décompresser (a,b), c, = [1,2], "ceci" # a = '1', b = '2', c = 'ce' (a,b), (c,) = [1,2],'ce' # ERREUR -- trop de valeurs pour décompresser # séquence prolongée déballage a, *b = 1,2,3,4,5 # a = 1, b = [2,3,4,5] *a, b = 1,2,3,4,5 # a = [1,2,3,4], b = 5 a, *b, c = 1,2,3,4,5 # a = 1, b = [2,3,4], c = 5 a, *b = 'X' # a = 'X', b = [] *a, b = 'X' # a = [], b = 'X' a, *b, c = "XY" # a = 'X', b = [], c = 'Y' a, *b, c = "X...Y" # a = 'X', b = ['.','.','.'], c = 'Y' a, b, *c = 1,2,3 # a = 1, b = 2, c = [3] a, b, c, *d = 1,2,3 # a = 1, b = 2, c = 3, d = [] a, *b, c, *d = 1,2,3,4,5 # ERREUR -- deux étoilé expressions dans l'affectation (a,b), c = [1,2], "ceci" # a = '1', b = '2', c = 'ce' (a,b) *c = [1,2], "ceci" # a = '1', b = '2', c = ['ce'] (a,b), c, *d = [1,2], "ceci" # a = '1', b = '2', c = 'ceci', d = [] (a,b), *c, d = [1,2], "ceci" # a = '1', b = '2', c = [], d = 'ce' (a,b), (c, *d) = [1,2], "ceci" # a = '1', b = '2', c = 't', d = ['h', 'i', 's'] *un = 1 # ERREUR, la cible doit être une liste ou un tuple *un = (1,2) # ERREUR, la cible doit être une liste ou un tuple *a, = (1,2) # a = [1,2] *a, = 1 # ERREUR -- 'int' object n'est pas itérable *un, = [1] # a = [1] *a = [1] # ERREUR, la cible doit être une liste ou un tuple *a, = (1,) # a = [1] *a, = (1) # ERREUR -- 'int' object n'est pas itérable *a, b = [1] # a = [], b = 1 *a, b = (1,) # a = [], b = 1 (a,b),c = 1,2,3 # ERREUR -- trop de valeurs pour décompresser (a,b) *c = 1,2,3 d'ERREUR # - 'int' object n'est pas itérable (a,b) *c = 'XY', 2, 3 # a = 'X', b = Y, c = [2,3] # séquence prolongée déballage -- IMBRIQUÉE (a,b),c = 1,2,3 # ERREUR -- trop de valeurs pour décompresser *(a,b), c = 1,2,3 # a = 1, b = 2, c = 3 *(a,b) = 1,2 # ERREUR, la cible doit être une liste ou un tuple *(a,b) = 1,2 # a = 1, b = 2 *(a,b) = 'XY' # ERREUR, la cible doit être une liste ou un tuple *(a,b) = 'XY' # a = 'X', b = 'Y' *(a, b) = 'ce' # ERREUR, la cible doit être une liste ou un tuple *(a, b) = 'ce' # ERREUR -- trop de valeurs pour décompresser *a, *b), = 'ce' # a = 't', b = ['h', 'i', 's'] *a, *b), c = 'ce' # a = 't', b = ['h', 'i'], c = 's' *a,*b), = 1,2,3,3,4,5,6,7 # a = 1, b = [2, 3, 3, 4, 5, 6, 7] *a,*b) *c = 1,2,3,3,4,5,6,7 # ERREUR -- deux étoilé expressions dans l'affectation *a,*b), (b*c) = 1,2,3,3,4,5,6,7 # ERREUR -- 'int' object n'est pas itérable *a,*b), c = 1,2,3,3,4,5,6,7 # a = 1, b = [2, 3, 3, 4, 5, 6], c = 7 *a,*b), (b*c) = 1,2,3,4,5,'XY' # a = 1, b = [2, 3, 4, 5], c = ['X', 'Y'] *a,*b), c, d = 1,2,3,3,4,5,6,7 # a = 1, b = [2, 3, 3, 4, 5], c = 6, d = 7 *a,*b), (c, d) = 1,2,3,3,4,5,6,7 # ERREUR -- 'int' object n'est pas itérable *a,*b, *c, d) = 1,2,3,3,4,5,6,7 # ERREUR -- 'int' object n'est pas itérable *a,*b) *(c, d) = 1,2,3,3,4,5,6,7 # ERREUR -- deux étoilé expressions dans l'affectation *(a,b), c = 'XY', 3 # ERREUR -- besoin de plus de 1 valeur pour décompresser *(*a,b), c = 'XY', 3 # a = [], b = 'XY', c = 3 (a,b), c = 'XY', 3 # a = 'X', b = Y, c = 3 *(a,b), c = 'XY', 3, 4 # a = 'XY', b = 3, c = 4 *(*a,b), c = 'XY', 3, 4 # a = ['XY'], b = 3, c = 4 (a,b), c = 'XY', 3, 4 # ERREUR -- trop de valeurs pour décompresser
MERCI pour votre PATIENCE :)
Maintenant mes questions est: comment comprendre une telle complexité et de la confusion. Comment on peut être toujours à DROITE, lors du calcul des résultats de ces expressions à la main. Ou, lors de la lecture de quelqu'un d'autre code, dois-je simplement de les ignorer et de ne jamais essayer d'imaginer à quoi l'expression est en train de faire?