without what variable type tipos for python variable-assignment

what - variables python 3



Precedencia del operador de asignaciĆ³n de Python-(a, b)=a[b]={}, 5 (1)

De la documentación de las declaraciones de asignación :

Una declaración de asignación evalúa la lista de expresiones (recuerde que esto puede ser una expresión única o una lista separada por comas; esta última produce una tupla) y asigna el único objeto resultante a cada una de las listas de destino, de izquierda a derecha.

Tienes dos listas de objetivos de asignación; a, b y a[b] , el valor {}, 5 se asigna a esos dos objetivos de izquierda a derecha.

Primero {}, 5 se desempaqueta la tupla {}, 5 a a, b . Ahora tienes a = {} y b = 5 . Tenga en cuenta que {} es mutable.

A continuación, asigna el mismo diccionario y entero a a[b] , donde a evalúa al diccionario, b evalúa a 5 , por lo que está configurando la clave 5 en el diccionario a la tupla ({}, 5) creando una referencia circular . El {...} tanto, se refiere al mismo objeto al que ya se está haciendo referencia.

Debido a que la asignación se lleva a cabo de izquierda a derecha, puede dividirla en:

a, b = {}, 5 a[b] = a, b

entonces a[b][0] es el mismo objeto que a :

>>> a, b = {}, 5 >>> a[b] = a, b >>> a {5: ({...}, 5)} >>> a[b][0] is a True

Vi este fragmento de Python en Twitter y quedé bastante confundido por la salida:

>>> a, b = a[b] = {}, 5 >>> a {5: ({...}, 5)}

¿Que esta pasando aqui?