Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Variabili che non si resettano

s
stefan9 (400 points)
3 7 11
in Programmare in Python by (400 points)
closed by

Buona sera

Stavo esercitandomi con l'esame del 15 febbraio e in particolare con il primo esercizio.

Ho riscontrato questo problema.

Quando faccio partire il grade, il primo test mi da l'Ok mentre il secondo test sempre del primo esercizio mi da un risultato non corretto. E come risultato mi da , in pratica, la somma dei due dizionari. Ovvero come se il Dizionario non fosse stato cancellato/resettato all'inizio della test. Ho ovviato al problema con un if , ma mi chiedevo perchè non venisse resettato il dizionario all'inizio del Test.

Il codice ovviamente è ricorsivo, nella definizione della funzione , originalmente era  def es1(dir, estensioni), io ho apportato questa modifica def es1(dir, estensioni,dic={},h = 0), e credo che il problema sia questo.

In caso posso postare il Codice dell'esercizio ?

Grazie in anticipo per la pazienza

403 views
closed with the note: scoperto-l-arcano

1 Answer

andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
edited by
Ho trovato il motivo.

Python calcola i valori di default al momento in cui la funzione viene definita e non al momento in cui viene usata.

Questo non crea problemi quando i valori di default sono IMMUTABILI (numeri, stringhe, tuple).

Quando invece sono MUTABILI (liste, dizionari, oggetti) è come se aveste definito una variabile globale, che non si resetta come invece vi aspettereste.