1 00:00:00,000 --> 00:00:03,000 Finora ad ora abbiamo detto che la mutazione 2 00:00:03,000 --> 00:00:05,000 modifica un oggetto esistente. 3 00:00:05,000 --> 00:00:10,000 Ma non si può ancora vedere la differenza evidente con quello che facciamo con le stringhe. 4 00:00:10,000 --> 00:00:14,000 Vedremo bene questa differenza quando introdurremo una nuova variabile. 5 00:00:14,000 --> 00:00:17,000 Torniamo all'esempio precedente, 6 00:00:17,000 --> 00:00:19,000 aggiungeremo ora un ulteriore assegnazione di variabile, 7 00:00:19,000 --> 00:00:23,000 introducendo una nuova variabile. 8 00:00:23,000 --> 00:00:25,000 Supponiamo di introdurre la viaribile 'q' . 9 00:00:25,000 --> 00:00:29,000 Ed assegniamo 'p' a 'q' , che significa che il valore di 'p' , 10 00:00:29,000 --> 00:00:31,000 che sarebbe questo oggetto lista, 11 00:00:31,000 --> 00:00:34,000 fa ora riferimento a 'q' . 12 00:00:34,000 --> 00:00:37,000 La cosa importante qui avviene dopo l'assegnazione, 13 00:00:37,000 --> 00:00:40,000 'p' e 'q' si riferiscono alla stessa lista. 14 00:00:40,000 --> 00:00:43,000 Supponiamo di aver fatto una assegnazione 15 00:00:43,000 --> 00:00:50,000 per modificare il valore di uno degli elementi di 'q' . 16 00:00:50,000 --> 00:00:53,000 Bhé, questo cambierà l'elemento quattro di 'q' , 17 00:00:53,000 --> 00:00:55,000 quindi questo è l'elemento quattro di 'q' . 18 00:00:55,000 --> 00:00:58,000 Cambierà il valore 19 00:00:58,000 --> 00:01:01,000 con il punto esclamativo. 20 00:01:01,000 --> 00:01:03,000 Cambierà anche il valore di 'p' . 21 00:01:03,000 --> 00:01:07,000 Ma l'assegnazione non contiene in alcun modo 'p' , 22 00:01:07,000 --> 00:01:11,000 il fatto che 'p' e 'q' si riferiscano allo stesso oggetto 23 00:01:11,000 --> 00:01:13,000 significa che è cambiato il valore di 'p' . 24 00:01:13,000 --> 00:01:15,000 Per vedere come questo si comporti diversamente con le stringhe 25 00:01:15,000 --> 00:01:17,000 proviamo a farlo con una stringa. 26 00:01:17,000 --> 00:01:20,000 Vedete se riuscite ad indovinare cosa succede se assegniamo 27 00:01:20,000 --> 00:01:23,000 un nuovo valore alla prima lettera della stringa. 28 00:01:23,000 --> 00:01:25,000 Lanciamo il programma per vedere cosa succede. 29 00:01:25,000 --> 00:01:27,000 Quello che otteniamo è un errore, 30 00:01:27,000 --> 00:01:30,000 poiché la stringa è un oggetto immutabile. 31 00:01:30,000 --> 00:01:32,000 Non c'è modo di cambiare il valore di una stringa, 32 00:01:32,000 --> 00:01:36,000 e l'errore ci dice che non è possibile fare assegnazioni all'interno di una stringa, 33 00:01:36,000 --> 00:01:41,000 a causa del tipo di oggetto, poiché è immutabile, non accetta l'assegnazione. 34 00:01:41,000 --> 00:01:44,000 Una delle differenze principali tra oggetti mutabili e immutabili 35 00:01:44,000 --> 00:01:47,000 è che se un oggetto è mutabile 36 00:01:47,000 --> 00:01:51,000 dobbiamo fare attenzione alle altre variabili che potrebbero far riferimento allo stesso oggetto. 37 00:01:51,000 --> 00:01:53,000 Possiamo cambiare il valore dell'oggetto, 38 00:01:53,000 --> 00:01:57,000 e ciò cambierà non solo la variabile a cui noi pensiamo faccia riferimento 39 00:01:57,000 --> 00:02:00,000 bensì tutte le altre variabili assegnate allo stesso oggetto. 40 00:02:00,000 --> 00:02:02,000 Vediamo un esempiio. 41 00:02:02,000 --> 00:02:07,000 Ho inizializzato 'p' assegnandolo alla lista che contiene 'Hello' . 42 00:02:07,000 --> 00:02:11,000 Ora ho un'assegnazione che introduce la nuova variabile 'q' 43 00:02:11,000 --> 00:02:13,000 e che assegna 'p' a quella variabile. 44 00:02:13,000 --> 00:02:15,000 Stampiamo ora il valore di 'p' e 'q' , 45 00:02:15,000 --> 00:02:19,000 e vedremo che entrambe conterranno la stringa 'Hello' . 46 00:02:19,000 --> 00:02:23,000 Cambiamo ora il valore della posizione zero. 47 00:02:23,000 --> 00:02:26,000 Avremmo una assegnazione che memorizza 48 00:02:26,000 --> 00:02:30,000 nella posizione zero di 'p' la lettera 'y' . 49 00:02:30,000 --> 00:02:35,000 Questo cambia il valore di 'p' . 50 00:02:35,000 --> 00:02:43,000 Cosa sorprendente potrebbe essere che questo cambia anche il valore di 'q' . 51 00:02:43,000 --> 00:02:46,000 Anche se 'q' non compare nell'assegnazione , 52 00:02:46,000 --> 00:02:49,000 lo cambia in quanto 'q' 53 00:02:49,000 --> 00:02:52,000 si riferisce allo stesso oggetto di 'p' .