[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:03.00,Default,,0000,0000,0000,,Finora ad ora abbiamo detto che la mutazione Dialogue: 0,0:00:03.00,0:00:05.00,Default,,0000,0000,0000,,modifica un oggetto esistente. Dialogue: 0,0:00:05.00,0:00:10.00,Default,,0000,0000,0000,,Ma non si può ancora vedere la differenza evidente con quello che facciamo con le stringhe. Dialogue: 0,0:00:10.00,0:00:14.00,Default,,0000,0000,0000,,Vedremo bene questa differenza quando introdurremo una nuova variabile. Dialogue: 0,0:00:14.00,0:00:17.00,Default,,0000,0000,0000,,Torniamo all'esempio precedente, Dialogue: 0,0:00:17.00,0:00:19.00,Default,,0000,0000,0000,,aggiungeremo ora un ulteriore assegnazione di variabile, Dialogue: 0,0:00:19.00,0:00:23.00,Default,,0000,0000,0000,,introducendo una nuova variabile. Dialogue: 0,0:00:23.00,0:00:25.00,Default,,0000,0000,0000,,Supponiamo di introdurre la viaribile 'q' . Dialogue: 0,0:00:25.00,0:00:29.00,Default,,0000,0000,0000,,Ed assegniamo 'p' a 'q' , che significa che il valore di 'p' , Dialogue: 0,0:00:29.00,0:00:31.00,Default,,0000,0000,0000,,che sarebbe questo oggetto lista, Dialogue: 0,0:00:31.00,0:00:34.00,Default,,0000,0000,0000,,fa ora riferimento a 'q' . Dialogue: 0,0:00:34.00,0:00:37.00,Default,,0000,0000,0000,,La cosa importante qui avviene dopo l'assegnazione, Dialogue: 0,0:00:37.00,0:00:40.00,Default,,0000,0000,0000,,'p' e 'q' si riferiscono alla stessa lista. Dialogue: 0,0:00:40.00,0:00:43.00,Default,,0000,0000,0000,,Supponiamo di aver fatto una assegnazione Dialogue: 0,0:00:43.00,0:00:50.00,Default,,0000,0000,0000,,per modificare il valore di uno degli elementi di 'q' . Dialogue: 0,0:00:50.00,0:00:53.00,Default,,0000,0000,0000,,Bhé, questo cambierà l'elemento quattro di 'q' , Dialogue: 0,0:00:53.00,0:00:55.00,Default,,0000,0000,0000,,quindi questo è l'elemento quattro di 'q' . Dialogue: 0,0:00:55.00,0:00:58.00,Default,,0000,0000,0000,,Cambierà il valore Dialogue: 0,0:00:58.00,0:01:01.00,Default,,0000,0000,0000,,con il punto esclamativo. Dialogue: 0,0:01:01.00,0:01:03.00,Default,,0000,0000,0000,,Cambierà anche il valore di 'p' . Dialogue: 0,0:01:03.00,0:01:07.00,Default,,0000,0000,0000,,Ma l'assegnazione non contiene in alcun modo 'p' , Dialogue: 0,0:01:07.00,0:01:11.00,Default,,0000,0000,0000,,il fatto che 'p' e 'q' si riferiscano allo stesso oggetto Dialogue: 0,0:01:11.00,0:01:13.00,Default,,0000,0000,0000,,significa che è cambiato il valore di 'p' . Dialogue: 0,0:01:13.00,0:01:15.00,Default,,0000,0000,0000,,Per vedere come questo si comporti diversamente con le stringhe Dialogue: 0,0:01:15.00,0:01:17.00,Default,,0000,0000,0000,,proviamo a farlo con una stringa. Dialogue: 0,0:01:17.00,0:01:20.00,Default,,0000,0000,0000,,Vedete se riuscite ad indovinare cosa succede se assegniamo Dialogue: 0,0:01:20.00,0:01:23.00,Default,,0000,0000,0000,,un nuovo valore alla prima lettera della stringa. Dialogue: 0,0:01:23.00,0:01:25.00,Default,,0000,0000,0000,,Lanciamo il programma per vedere cosa succede. Dialogue: 0,0:01:25.00,0:01:27.00,Default,,0000,0000,0000,,Quello che otteniamo è un errore, Dialogue: 0,0:01:27.00,0:01:30.00,Default,,0000,0000,0000,,poiché la stringa è un oggetto immutabile. Dialogue: 0,0:01:30.00,0:01:32.00,Default,,0000,0000,0000,,Non c'è modo di cambiare il valore di una stringa, Dialogue: 0,0:01:32.00,0:01:36.00,Default,,0000,0000,0000,,e l'errore ci dice che non è possibile fare assegnazioni all'interno di una stringa, Dialogue: 0,0:01:36.00,0:01:41.00,Default,,0000,0000,0000,,a causa del tipo di oggetto, poiché è immutabile, non accetta l'assegnazione. Dialogue: 0,0:01:41.00,0:01:44.00,Default,,0000,0000,0000,,Una delle differenze principali tra oggetti mutabili e immutabili Dialogue: 0,0:01:44.00,0:01:47.00,Default,,0000,0000,0000,,è che se un oggetto è mutabile Dialogue: 0,0:01:47.00,0:01:51.00,Default,,0000,0000,0000,,dobbiamo fare attenzione alle altre variabili che potrebbero far riferimento allo stesso oggetto. Dialogue: 0,0:01:51.00,0:01:53.00,Default,,0000,0000,0000,,Possiamo cambiare il valore dell'oggetto, Dialogue: 0,0:01:53.00,0:01:57.00,Default,,0000,0000,0000,,e ciò cambierà non solo la variabile a cui noi pensiamo faccia riferimento Dialogue: 0,0:01:57.00,0:02:00.00,Default,,0000,0000,0000,,bensì tutte le altre variabili assegnate allo stesso oggetto. Dialogue: 0,0:02:00.00,0:02:02.00,Default,,0000,0000,0000,,Vediamo un esempiio. Dialogue: 0,0:02:02.00,0:02:07.00,Default,,0000,0000,0000,,Ho inizializzato 'p' assegnandolo alla lista che contiene 'Hello' . Dialogue: 0,0:02:07.00,0:02:11.00,Default,,0000,0000,0000,,Ora ho un'assegnazione che introduce la nuova variabile 'q' Dialogue: 0,0:02:11.00,0:02:13.00,Default,,0000,0000,0000,,e che assegna 'p' a quella variabile. Dialogue: 0,0:02:13.00,0:02:15.00,Default,,0000,0000,0000,,Stampiamo ora il valore di 'p' e 'q' , Dialogue: 0,0:02:15.00,0:02:19.00,Default,,0000,0000,0000,,e vedremo che entrambe conterranno la stringa 'Hello' . Dialogue: 0,0:02:19.00,0:02:23.00,Default,,0000,0000,0000,,Cambiamo ora il valore della posizione zero. Dialogue: 0,0:02:23.00,0:02:26.00,Default,,0000,0000,0000,,Avremmo una assegnazione che memorizza Dialogue: 0,0:02:26.00,0:02:30.00,Default,,0000,0000,0000,,nella posizione zero di 'p' la lettera 'y' . Dialogue: 0,0:02:30.00,0:02:35.00,Default,,0000,0000,0000,,Questo cambia il valore di 'p' . Dialogue: 0,0:02:35.00,0:02:43.00,Default,,0000,0000,0000,,Cosa sorprendente potrebbe essere che questo cambia anche il valore di 'q' . Dialogue: 0,0:02:43.00,0:02:46.00,Default,,0000,0000,0000,,Anche se 'q' non compare nell'assegnazione , Dialogue: 0,0:02:46.00,0:02:49.00,Default,,0000,0000,0000,,lo cambia in quanto 'q' Dialogue: 0,0:02:49.00,0:02:52.00,Default,,0000,0000,0000,,si riferisce allo stesso oggetto di 'p' .