Ciao a tutti, programmo saltuariamente e oggi ho riletto questo articolo:
https://realpython.com/python-namespace/
per rinfrescarmi la memoria.
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.
Es:
---
fruits = ['apple', 'banana']
def f():
fruits.append('melon')
f()
print(fruits)
# ['apple', 'banana', 'melon']
---
Lo stesso risultato lo si ottiene se passo fruits come argomento della
funzione:
---
fruits = ['apple', 'banana']
def f(fruits):
fruits.append('melon')
f(fruits)
print(fruits)
# ['apple', 'banana', 'melon']
---
1) Cerco una razionale su questa scelta implementativa così da assimilarlo
meglio.
Secondo voi perché i mutable object possono essere modificati dal local
scope?
2) Nel secondo esempio credo non vi sia alcun vantaggio / differenza nel
passare la variabile come argomento della funzione. Concordate?
_______________________________________________
Python mailing list
[email protected]
https://lists.python.it/mailman/listinfo/python