Funzione Python (o set di funzioni) come input di una funzione o classe

-3

c'è un modo per avere una funzione (ancora sconosciuta) come argomento di una funzione in python:

def doSomething(<func>):
    #do something with func()

in una fase successiva, è possibile definire le funzioni, ad esempio:

def f1(x):
    return x*x

def f2(x):
    return x+1

e potrei chiamare ora:

doSomething(f1,x1)
doSomething(f2,x1) 
    
posta Kalliope 13.09.2016 - 14:38
fonte

2 risposte

1

Le funzioni sono oggetti perfettamente normali in Python, quindi la risposta è sì.

def callFunctionTwice(func, arg):
    func(arg)
    func(arg)

def f(a):
    print(a)

callFunctionTwice(f, "hmm")  # Prints "hmm" twice
    
risposta data 13.09.2016 - 15:19
fonte
0

Qualcuno ha risposto meglio di quanto avrei potuto in Stack Overflow, assicurati di modificare la sua risposta in aggiunta (o invece di) mia se soddisfacente.

ma per completezza ecco i takeaway:

  • definisce la tua classe e sovraccarichi il metodo chiamata
  • l'oggetto funzione lo ha naturalmente, basta chiamarlo per invocare la funzione
  • Le espressioni lambda possono anche ottenere l'effetto desiderato
risposta data 13.09.2016 - 15:12
fonte

Leggi altre domande sui tag