"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo funcionan las asignaciones encadenadas en Python? ¿Son realmente equivalentes a múltiples asignaciones secuenciales?

¿Cómo funcionan las asignaciones encadenadas en Python? ¿Son realmente equivalentes a múltiples asignaciones secuenciales?

Publicado el 2024-11-08
Navegar:797

How do chained assignments work in Python? Are they truly equivalent to multiple sequential assignments?

Comprensión de las asignaciones encadenadas en Python

Las asignaciones encadenadas en Python, ejemplificadas por expresiones como "x = y = alguna función()", han provocado discusiones sobre su equivalencia con múltiples asignaciones secuenciales ("x = alguna función(); y = alguna función()"). Para aclarar este asunto, exploremos en detalle el funcionamiento de las asignaciones encadenadas.

En una asignación encadenada, el objetivo más a la izquierda se asigna primero. Por lo tanto, "x = y = algunafunción()" es equivalente a:

temp = somefunction()
x = temp
y = temp

Este orden es crucial, ya que el objetivo de la izquierda recibe el valor de la variable temporal "temp" antes de asignarlo al objetivo de la derecha. Esto es evidente en el desmontaje de una función de asignación encadenada:

>>> def chained_assignment():
...     x = y = some_function()
...
>>> import dis
>>> dis.dis(chained_assignment)
  2           0 LOAD_GLOBAL              0 (some_function)
              3 CALL_FUNCTION            0
              6 DUP_TOP
              7 STORE_FAST               0 (x)
             10 STORE_FAST               1 (y)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

Tenga en cuenta que el valor devuelto por la función se almacena primero en "x" y luego en "y".

Esta comprensión es crucial para comprender el comportamiento de las asignaciones encadenadas. Por ejemplo, se deben evitar expresiones como "x = y = []", ya que tanto "x" como "y" se referirán a la misma lista. En su lugar, prefiera asignaciones separadas como "x = []" e "y = []" para crear listas distintas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3