Prediga la salida de estas dos expresiones en la consola de Python
- en la consola
Geek
=
(
1
,
2
, [
8
,
9
])
Geek[
2
]
+
=
[
3
,
4
]
Salida:
Explicación:- Mire el código de bytes que genera Python para la expresión s[a] += b. Queda claro cómo sucede eso.
- Funciona paso a paso
- Ponga el valor de s[a] en Top Of Stack (TOS).
- Realizar TOS += b. Esto tiene éxito, si TOS se refiere a un objeto mutable. Es por eso que agregar un elemento a la lista es exitoso.
- Asigne s[a] = TOS. Esto falla, si s es inmutable. TypeError, debido a que la tupla es inmutable en el ejemplo anterior.
cosas para aprender
- Poner elementos mutables en tuplas no es una buena idea.
- La asignación aumentada no es una operación atómica; solo vimos que lanzaba una excepción después de hacer parte de su trabajo.
- Inspeccionar el código de bytes de Python no es demasiado difícil y, a menudo, es útil para ver qué sucede debajo del capó.
- Mire el código de bytes que genera Python para la expresión s[a] += b. Queda claro cómo sucede eso.
Publicación traducida automáticamente
Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA