Ho il seguente codice e variabili, e voglio trovare ciò che le variabili a
, a1
, a2
, b
, b1
e b2
si riferiscono a dopo l'esecuzione del codice.Riassegnazione variabili in pitone
def do_something(a, b):
a.insert(0, "z")
b = ["z"] + b
a = ["a", "b", "c"]
a1 = a
a2 = a[:]
b = ["a", "b", "c"]
b1 = b
b2 = b[:]
do_something(a, b)
Il mio tentativo di soluzione è la seguente:
a = ["z", "a", "b", "c"]
a1 = ["a", "b", "c"]
a2 = ["a", "b", "c"]
b = ["z" "a", "b", "c"]
b1 = ["a", "b", "c"]
b2 = ["a", "b", "c"]
Ma la soluzione reale è:
a = ["z", "a", "b", "c"]
a1 = ["z", "a", "b", "c"]
a2 = ["a", "b", "c"]
b = ["a", "b", "c"]
b1 = ["a", "b", "c"]
b2 = ["a", "b", "c"]
Qualcuno mi può camminare attraverso il mio errore?
A che punto trovi/stampi i valori di tutte le variabili? Forse questo ha qualcosa a che fare con lo scope – Totem
Penso che per "la mia soluzione tentata" intendi "quello che mi aspetto" ... è corretto? Ciò potrebbe chiarire una certa confusione. – Ajean
Leggere [questo] (http: // stackoverflow.it/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) può aiutare a capire perché questo è successo – Anzel