Acertijo de asignación A += B en Python

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ó.

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *