Lezioni di Python – 3.6 Funzioni come oggetti

Lezioni di Python - 3.6 Funzioni come oggetti

Funzioni come variabili

In Python qualsiasi cosa può essere considerato come una variabile, persino le funzioni. Infatti, anche se può essere all’inizio poco intuitivo è possibile assegnare una funzione ad una variabile, in questo modo è come se avessimo dato un nuovo nome alla variabile.

def foo():
     print("Hello World")

variabile = foo
variabile()

Eseguendo si ottiene

>>>
Hello World

L’assegnazione di una variabile di una funzione è ben riconoscibile rispetto all’assegnazione di un valore restituito di una funzione ad una variabile, poichè il nome della funzione compare senza parentesi tonde.

variabile = foo   # funzione come valore della variabile

variabile = foo() # valore restituito della funzione come valore della variabile

Funzioni come argomenti di altre funzioni

Attenzione a non confondersi anche qui con il caso del valore restuito. Qui è l’intera funzione che viene passata come argomento di una funzione. Riconoscibile anche qui per il fatto che la funzione non presenta le parentesi tonde.

def mix(a,b):
     return (a * b)/2

def foo(func,x,y):
     return func(x,y)

print(foo(mix,2,3)) 

Eseguendo questo codice si ottiene

>>>
3.0

⇐ Vai a Lezione 3.5 – Commenti e Docstrings

Vai a Lezione 3.7 – Moduli 

2 commenti su “Lezioni di Python – 3.6 Funzioni come oggetti

  1. ladecisionegiusta

    A parte i complimenti per chi ha messo in piedi questo sito, vorrei portare la mia esperienza con questa lezione:

    ho perso tutto il pomeriggio a capire una cosa banale e spiegata bene, nonostante fosse spiegata non capivo cosa stava succedendo.
    Qunidi il primo def:

    def mix(a,b):
    return (a * b)/2

    non ha bisogno di spiegazioni

    il secondo def:

    def foo(func,x,y):
    return func(x,y)

    la scritta func poteva essere una lettera qualsiasi.

    Quando si richiama la seconda f.ne:

    print (foo(mix,3,2))

    si è andato a compilare di fatto il secondo return:

    return func(x,y) > return mix(3,2)

    Come spiegato da “meccanismocomplesso” occhio alle parentesi tonde:

    Avevo letto ma non avevo capito e ci ho messo un pomeriggio, che testa dura:

    “Riconoscibile anche qui per il fatto che la funzione non presenta le parentesi tonde”

Lascia un commento