/ / Assegnazione di variabili in Python [duplicato] - python

Assegnazione di variabili in Python [duplicato] - python

In Python ho creato interi e elencato gli oggetti come segue:

a = 10
b = 10
x = []
y = []

Quindi ottengo i seguenti risultati durante il confronto con l'id di a e be l'ID di x e y

id(a)==id(b)  returns True
id(x)==id(y) returns False

Da qualche parte ho letto che l'assegnazione in Python non copia mai i dati. La mia domanda è perché x e y non hanno lo stesso id?

risposte:

1 per risposta № 1

Devi sapere che gli interi python sono memorizzati nella cache e immutabili, ciò significa che entrambi a e b stanno etichettando lo stesso 10. Le liste sono oggetti e sono allocate separatamente, ecco perché i loro id sono diversi dall'inizio


1 per risposta № 2

Le liste sono modificabili, se si utilizza lo stesso oggetto, quando si aggiunge un elemento a una delle liste, si vedrà anche il resto sull'altro.

L'identità degli interi dipende dall'implementazione e di solito è valida solo per i numeri piccoli; buona lettura Qui.

A proposito, == è l'operatore di uguaglianza. Un modo più breve (e più pulito) per id(a)==id(b) è usare l'operatore di identità is. Nel tuo caso: a is b.


0 per risposta № 3

x = [] è una scorciatoia per istanziare una nuova lista, che significa un nuovo oggetto con un nuovo ID oggetto. Nonostante x e y sono assegnati come liste vuote, sono semplicemente riferimenti a posizioni di memoria allocate per le rispettive liste. Se id(x) == id(y) poi x e y condividerebbe lo stesso ID oggetto, il che significherebbe in realtà che condividono un percorso di memoria o sono riferimenti allo stesso oggetto (quindi eventuali modifiche apportate a uno si applicherebbero all'altro).

D'altro canto, id(a) == id(b) perché sono entrambi numeri interi, che sono tipi di dati primitivi.