in Python tutto va facendo riferimento
In Python, tutto è un punto di riferimento, ed i riferimenti essere passati in giro per valore.
Se si desidera utilizzare questi termini. Ma quei termini rendono le cose più difficili da capire.
Molto più semplice: in Python, una variabile è un nome per un oggetto. =
viene utilizzato per modificare l'oggetto a cui si riferisce un nome. Il lato sinistro può fare riferimento a parte di un oggetto esistente, nel qual caso l'intero oggetto viene modificato sostituendo quella parte. Questo perché l'oggetto, a sua volta, non contiene realmente le sue parti, ma contiene invece più nomi, che possono essere causati per iniziare a riferirsi a cose diverse.
quindi quando viene creato un nuovo oggetto?
Gli oggetti vengono creati quando vengono creati (utilizzando il costruttore di classi o, nel caso di tipi built-in che hanno una rappresentazione letterale, digitando un valore letterale). Non capisco come questo sia rilevante per il resto della tua domanda.
m = m[1:] # m changes its reference to the new sliced list
Sì, certo. Ora m
si riferisce al risultato della valutazione di m[1:]
.
edits m but not d (I wanted to change d)
Sì, certo. Perché cambia d
? Non era una specie di magia, era semplicemente il risultato della valutazione di d['m']
. Esattamente la stessa cosa accade su entrambe le linee.
Diamo un'occhiata ad un esempio più semplice.
m = 1
m = 2
Questo causa 1
per diventare 2
? No certo che no. I numeri interi sono immutabili. Ma la stessa cosa sta succedendo: m
è causato da un nome a una cosa, e poi a un altro nome.
Oppure, in un altro modo: se i "riferimenti" dovessero funzionare come previsto, la linea m = m[1:]
sarebbe ricorsiva. Ti aspetti che significhi "ovunque tu veda m
, trattalo come se significasse m[1:]
". Beh, in questo caso, m[1:]
sarebbe in realtà significherebbe m[1:][1:]
, che sarebbe poi significherebbe m[1:][1:][1:]
, ecc
Se sei un principiante visivo, [ecco] (http://people.csail.mit.edu/pgbovine/python /) un buon tutorial – forivall
Commento estremamente utile Mr. @jordoex - Davvero impressionante! –