Visibilità delle risorse – 2

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