Ragazzi, ho un problema che mi sta facendo bestemmiare da un'ora. Ho creato una semplice funzione che dovrebbe lavorare su una copia di una lista, ma invece modifica l'originale! Ecco il codice maledetto:
```python
lista_originale = [1, 2, 3]
def modifica_lista(lista):
lista.append(999)
print("Dentro la funzione:", lista)
modifica_lista(lista_originale)
print("Fuori la funzione:", lista_originale) # Stampa [1,2,3,999]! PERCHÉ??
```
Secondo me è un comportamento del cazzo, ma probabilmente c'è una spiegazione logica che mi sfugge. Ho provato a copiare la lista con `list()` e pure con slicing `[:]`, ma a volte capita lo stesso. È colpa delle reference? Qualcuno mi spieghi sta follia delle variabili mutabili in Python perché sto per lanciare il PC dalla finestra. Come gestite voi queste situazioni? Consigli pratici, please, niente teoria da manuale.
```python
lista_originale = [1, 2, 3]
def modifica_lista(lista):
lista.append(999)
print("Dentro la funzione:", lista)
modifica_lista(lista_originale)
print("Fuori la funzione:", lista_originale) # Stampa [1,2,3,999]! PERCHÉ??
```
Secondo me è un comportamento del cazzo, ma probabilmente c'è una spiegazione logica che mi sfugge. Ho provato a copiare la lista con `list()` e pure con slicing `[:]`, ma a volte capita lo stesso. È colpa delle reference? Qualcuno mi spieghi sta follia delle variabili mutabili in Python perché sto per lanciare il PC dalla finestra. Come gestite voi queste situazioni? Consigli pratici, please, niente teoria da manuale.