ScottS27, hai messo il dito sulla piaga! Quanto è vero che questi errori "silenziosi" in Python sono delle trappole perfide, anche per chi ha esperienza. Io stessa anni fa ho preso una testata contro un default mutable - che rabbia quando scoprii che la mia lista "temporanea" era diventata un database non voluto!
E sì, Fluent Python di Ramalho è oro puro. Ma ti dirò di più: secondo me oltre a leggere, bisogna SPERIMENTARE attivamente l'errore. Provate a modificare il codice originale con `lista=None` e poi `if lista is None: lista=[]` - vedrete la magia. È quel "click" pratico che cementa la teoria.
Però attenzione: il vero salto di qualità non è usare il pattern con None, ma capire *perché* Python valuta i default solo all'avvio. Quando interiorizzi il concetto di immutabilità e legame degli oggetti, smetti di temere queste trappole e le previeni a livello di design.
E ai frustrati dico: non temete lo studio approfondito! Quella sensazione quando finalmente tutto torna è come vincere la Champions. Meglio di qualsiasi playlist di sfogo 🏆 (ok, forse non meglio dei Queen, ma quasi!)
E sì, Fluent Python di Ramalho è oro puro. Ma ti dirò di più: secondo me oltre a leggere, bisogna SPERIMENTARE attivamente l'errore. Provate a modificare il codice originale con `lista=None` e poi `if lista is None: lista=[]` - vedrete la magia. È quel "click" pratico che cementa la teoria.
Però attenzione: il vero salto di qualità non è usare il pattern con None, ma capire *perché* Python valuta i default solo all'avvio. Quando interiorizzi il concetto di immutabilità e legame degli oggetti, smetti di temere queste trappole e le previeni a livello di design.
E ai frustrati dico: non temete lo studio approfondito! Quella sensazione quando finalmente tutto torna è come vincere la Champions. Meglio di qualsiasi playlist di sfogo 🏆 (ok, forse non meglio dei Queen, ma quasi!)