Funzioni di prima classe
Passare e restituire funzioni
Funzioni di prima classe è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
Le funzioni sono oggetti
In Python, le funzioni sono oggetti di prima classe. È possibile assegnarle a variabili, memorizzarle in strutture dati, passarle come argomenti e restituirle da altre funzioni, proprio come numeri o stringhe.
def greet():
return 'hi'
print(type(greet))
print(greet())Assegnare funzioni a variabili
Il nome di una funzione è semplicemente un riferimento. Lo si assegna a un altro nome e si richiama la funzione tramite quel nome, senza parentesi quando si fa riferimento alla funzione stessa.
def shout(text):
return text.upper()
yell = shout
print(yell('hello'))Funzioni nelle strutture dati
È possibile memorizzare funzioni in liste o dizionari, quindi cercarle e richiamarle dinamicamente.
def add(a, b):
return a + b
def sub(a, b):
return a - b
ops = {'+': add, '-': sub}
print(ops['+'](10, 4))
print(ops['-'](10, 4))Passare funzioni come argomenti
Una funzione che accetta un'altra funzione come parametro è detta funzione di ordine superiore. La funzione passata è l'argomento.
def apply(func, value):
return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))map usa funzioni di prima classe
Le funzioni integrate come map si basano sul passaggio di funzioni. In questo caso, una funzione viene applicata a ogni elemento.
def square(n):
return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)filter accetta un predicato
filter conserva gli elementi per i quali la funzione passata restituisce True. È la funzione a decidere quali elementi mantenere.
def is_even(n):
return n % 2 == 0
print(list(filter(is_even, range(10))))Restituire una funzione
Una funzione può restituire un'altra funzione. La funzione restituita può quindi essere richiamata separatamente.
def get_greeter():
def greeter(name):
return 'Hello ' + name
return greeter
f = get_greeter()
print(f('Ada'))Funzioni come chiavi di ordinamento
sorted accetta una funzione key che associa ogni elemento a un valore utilizzato per l'ordinamento.
words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)Le lambda come funzioni rapide
Una lambda è una piccola funzione anonima. È perfetta per un utilizzo occasionale come argomento.
nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))Le funzioni hanno attributi
Poiché le funzioni sono oggetti, hanno attributi come __name__ e una docstring in __doc__.
def hello():
'Says hello.'
return 'hi'
print(hello.__name__)
print(hello.__doc__)Creare una tabella di dispatch
Combinando queste idee, è possibile creare una tabella di dispatch ordinata che seleziona una funzione in base al nome, senza lunghe catene di if/elif.
def start():
return 'starting'
def stop():
return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())Verifica rapida
Che cosa significa che in Python le funzioni sono "di prima classe"?
Riepilogo: funzioni di prima classe
Ha appreso che in Python:
- Le funzioni sono oggetti che è possibile assegnare, memorizzare, passare e restituire.
- Le funzioni di ordine superiore accettano o restituiscono altre funzioni (la chiave di
map,filteresorted). lambdacrea rapidamente funzioni anonime.- Questo consente di usare tabelle di dispatch ordinate invece di lunghe strutture condizionali.
ops = {'double': lambda x: x * 2}
print(ops['double'](21))Domande Frequenti
La lezione «Funzioni di prima classe» è gratuita?
Sì — il testo completo di «Funzioni di prima classe» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Funzioni di prima classe»?
Passare e restituire funzioni Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Funzioni di prima classe»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Funzioni di prima classe
- Chiusure e variabili libere
- nonlocal e stato mutabile
- Funzioni parziali