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