>>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 43955984
>>> c += c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 43955984
>>> del c
>>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 44023976
>>> c = c + c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 26564048
Quelle est la différence? sont + = et + ne sont pas censés être simplement du sucre syntaxique?+ et + = les opérateurs sont différents?
Votre exemple montre clairement qu'ils ne le sont pas. + = est clairement ajouté à cet objet et x = a + b (même si a = b = x) créerait clairement un nouveau résultat et l'assignerait au LHS. Je pense qu'il serait contre-productif de vérifier chaque addition pour voir s'il s'agissait d'une simple addition (comme ci-dessus) et d'optimiser cela à + =. – Lazarus
pourquoi la rétrogradation?J'avoue que le titre pourrait être mieux, mais la question elle-même est tout à fait valide – Kimvais
cette question a quelques bonnes informations supplémentaires sur les opérations de concaténation de liste http://stackoverflow.com/questions/2022031/python-append-vs-operator-on-lists -why-do-these-give-different-results – Kimvais