A menudo usamos x += y
en lugar de x = x + y
. Entonces, ¿son iguales o diferentes? Encontrémoslo aquí.
Ejemplo 1:
x = [1, 2] another_x = x y = [3] x += y print(x) print(another_x)
Producción:
[1, 2, 3] [1, 2, 3]
Ejemplo 2:
x = [1, 2] another_x = x y = [3] x = x + y print(x) print(another_x)
Producción:
[1, 2, 3] [1, 2]
Así que aquí encontramos que ambos códigos son casi similares, pero aún así hay diferencias en los resultados. Entonces, la razón detrás de esto es que para muchos tipos de objetos, x += y
modificará el objeto al que se hace referencia x
en el lugar, mientras x = x + y
que creará un nuevo objeto y x
lo reasignará. Esta distinción es importante si todavía tiene otra referencia al objeto en algún lugar como en este caso another_a
es otra referencia al objeto.
Sin embargo, muchos objetos, como números y strings, son «inmutables» (no se pueden modificar en el lugar) y, para esos objetos, x += y
normalmente x = x + y
harán exactamente lo mismo. Pero si escribe su propia clase, puede personalizar qué +
y +=
hacer cuando se usa con objetos de esa clase, y puede hacer que hagan cosas completamente diferentes si realmente lo desea.
Ejemplo 3:
x = "12345" another_x = x y = "67890" x += y print(x) print(another_x)
Producción:
1234567890 12345
Ejemplo 4:
x = "12345" another_x = x y = "67890" x = x + y print(x) print(another_x)
Producción:
1234567890 12345
Publicación traducida automáticamente
Artículo escrito por kapadiamiraj1133 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA