web-dev-qa-db-fra.com

Déballer python tuple avec [] 's

Je connais la façon canonique de déballer un tuple est comme ça

a, b, c = (1, 2, 3)
# or
(a,b,c) = (1, 2, 3)

mais remarqué que vous pouvez décompresser un tuple comme celui-ci

[a, b, c] = (1, 2, 3)

La deuxième méthode engage-t-elle un coût supplémentaire en raison d'une sorte de construction de moulage ou de liste? Existe-t-il un moyen d'inspecter comment le python INTERPRÈTE s'occupe de cet apparence pour regarder l'assemblée d'un compilateur?

15
Philip Nelson

Utilisation Godbolt et sélectionnant Python comme langue puis entrez dans les trois lignes de code, vous pouvez voir qu'ils ont tous le même bytecode:

  1           0 LOAD_CONST               5 ((1, 2, 3))
              2 UNPACK_SEQUENCE          3
              4 STORE_NAME               0 (a)
              6 STORE_NAME               1 (b)
              8 STORE_NAME               2 (c)

  2          10 LOAD_CONST               6 ((1, 2, 3))
             12 UNPACK_SEQUENCE          3
             14 STORE_NAME               0 (a)
             16 STORE_NAME               1 (b)
             18 STORE_NAME               2 (c)

  3          20 LOAD_CONST               7 ((1, 2, 3))
             22 UNPACK_SEQUENCE          3
             24 STORE_NAME               0 (a)
             26 STORE_NAME               1 (b)
             28 STORE_NAME               2 (c)

Donc, ils sont les mêmes, juste des syntaxes différentes.

7
Aplet123

J'ai vérifié l'heure d'exécution et le nombre de cycles à l'aide de Linux Perf Tools. Tous les 3 programmes montrent le même temps d'exécution, alors je pense qu'il n'y a pas de coûts supplémentaires.

1
Nagmat