Le risorse globali strutturate sono visibili all’interno delle funzioni, le modifiche sono permanenti
def funzione():
print(x) # [10, 20]
x[1]=1000
print(x) # [10, 1000]
x=[10, 20]
print(x) # [10, 20]
funzione()
print(x) # [10, 1000]
La risorsa locale x copre la visibilità della risorsa globale con lo stesso nome
def funzione():
x=[1,2,3]
print(x) # [1,2,3]
x=[10, 20]
print(x) # [10, 20]
funzione()
print(x) # [10, 20]

Il parametro formale x della funzione si riferisce alla risorsa strutturata globale x1.
Le modifiche a x (x1) sono permanenti.
def funzione(x):
print(x) # [10, 20]
x[1]=1000
print(x) # [10, 1000]
x1=[10, 20]
x2=[1, 2, 3]
print(x1, x2) # [10, 20] [1, 2, 3]
funzione(x1)
print(x1, x2) # [10, 1000] [1, 2, 3]
Parametri misti

I parametri formali della funzione x e a sono di tipo diverso
- x si riferisce alla risorsa strutturata x1 (le modifiche a x (x1) sono permanenti)
- a è una risorsa locale che alla chiamata assume il valore del parametro attuale a1 (le modifiche ad a sono locali).
def funzione(x, a):
print(x, a) # [10, 20] 10
x[1]=1000
a=100
print(x, a) # [10, 1000] 100
a1=10
a2=15
x1=[10, 20]
x2=[1, 2, 3]
print(x1, a1) # [10, 20] 10
funzione(x1, a1)
print(x1, a1) # [10, 1000] 10