<div dir="ltr">Ciao a tutti, programmo saltuariamente e oggi ho riletto questo articolo:<br><div><a href="https://realpython.com/python-namespace/">https://realpython.com/python-namespace/</a></div><div><br></div><div>per rinfrescarmi la memoria.<br><br></div><div>Una volta capito il modello LEGB, ci sono "rimasto male" quando ho letto che un mutable object, come ad esempio una lista presente sul global scope, può essere modificata dal local scope.<br><br></div><div>Es:<br><br>---</div><div>fruits = ['apple', 'banana']<br><br></div><div>def f():<br></div><div>    fruits.append('melon')<br><br></div><div>f()<br><br></div><div>print(fruits)<br><br># ['apple', 'banana', 'melon']<br>---<br><br><br></div><div>Lo stesso risultato lo si ottiene se passo fruits come argomento della funzione:</div><div><br>---<br><div>fruits = ['apple', 'banana']<br><br>def f(fruits):<br>    fruits.append('melon')<br><br>f(fruits)<br><br>print(fruits)<br><br># ['apple', 'banana', 'melon']<br>---<br><br><br></div><div>1) Cerco una razionale su questa scelta implementativa così da assimilarlo meglio.<br></div><div>Secondo voi perché i mutable object possono essere modificati dal local scope?<br><br></div><div>2) Nel secondo esempio credo non vi sia alcun vantaggio / differenza nel passare la variabile come argomento della funzione. Concordate?</div><div><br></div><br></div></div>