Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

problema con la modifica di una variabile all'interno di una funzione

r
rafmc98 (180 points)
0 3 7
in Programmare in Python by (180 points)
closed by
Come posso fare per passare una variabile ad una funzione, e dopo avergli apportato delle modifiche all'interno della funzione far si che la funzione mi restituisca la variabile con il nuovo valore modificato?
459 views
closed with the note: answered

3 Answers

m
matteo.chiari (3650 points)
2 17 30
by (3.7k points)

Ciao,

puoi usare la parola return.

Se chiami una funzione che ti restituisce qualcosa all'assegnazione di una variabile, il valore resituito verrà assegnato alla variabile. Es.:

def somma(a, b):

  return a + b

a, b = 1, 2
c = somma(a,b) 

# la variabile ora contiene la somma di a e b restituita dalla funzione somma

Gianluigi (1420 points)
10 17 30
by (1.4k points)
edited by
Puoi fare cosi:

    variabile = qualcosa   #qui dichiari la tua variabile in qualche modo
    variabile = funzione(variabile)   #qui assegni alla variabile il valore che ti restituisce la funzione

quindi il valore di "variabile" risulterà aggiornato :)
D
Domenicobrz (1470 points)
3 9 19
by (1.5k points)

In aggiunta alle altre risposte, in python è possibile modificare gli argomenti di una funzione ai quali è associata una reference ad un oggetto senza dover ritornare l'oggetto dalla funzione

Passando ad esempio una lista come argomento (mutable type) è possibile modificarne i contenuti direttamente dentro la funzione

def changeByRef(reference):
    reference[0] = 1

lista = [ 5, 2, 4 ]
print(lista[0]) # out - 5  è il primo elemento della lista
changeByRef(lista)
print(lista[0]) # out - 1  è il nuovo primo elemento della lista

Questo puo' tornare utile ad esempio quando si ha una funzione che per natura ritorna soltanto vero/falso, ma che comunque necessita di poter cambiare il valore dei suoi argomenti

D
Domenicobrz (1470 points)
3 9 19
by (1.5k points)
Nota in questo caso che assegnare una lista totalmente differente all'interno di una funzione non avrebbe nessun effetto sulla lista passata come argomento perchè staresti assegnando una nuova reference ad una variabile creata all'interno della funzione, anzichè cambiare la reference a cui punta la lista originale passata come argomento.

Più info qui : https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference