0Pricing
Python Academy · Lezione

Funzioni come oggetti di prima classe

Comprenda le closure e il passaggio delle funzioni come argomenti.

Funzioni come oggetti 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.

Introduzione

In Python, le funzioni sono oggetti di prima classe: possono essere passate come argomenti, restituite e memorizzate nelle strutture dati.

Le funzioni sono oggetti

def double(x): return x*2 crea un oggetto funzione. double è semplicemente un nome. È possibile assegnarlo: fn = double; fn(5) funziona.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Passare funzioni come argomenti

def apply(func, val): return func(val) — func è un argomento richiamabile. Questa è programmazione di ordine superiore.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Memorizzare funzioni nei contenitori

ops = [add, sub, mul] memorizza oggetti funzione in una lista. Iteri e richiami: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Restituire funzioni

Una funzione può restituire un'altra funzione. def make_adder(n): def adder(x): return x+n; return adder
def make_adder(n):
    def adder(x): return x + n
    return adder
add10 = make_adder(10)
print(add10(5), add10(20))

Closure

Una closure cattura le variabili dell'ambito che la contiene. La funzione interna «chiude su» n in make_adder.
def counter(start=0):
    count = [start]
    def inc():
        count[0] += 1
        return count[0]
    return inc
c = counter()
print(c(), c(), c())

Lambda come funzione anonima

lambda x: x*2 è una funzione anonima composta da una sola espressione. È utile come callback breve, ma le assegni un nome se la logica non è banale.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() e filter()

map(func, iterable) applica func a ogni elemento. filter(pred, iterable) conserva gli elementi per i quali pred è True.
nums = [1, 2, 3, 4, 5]
print(list(map(lambda x: x**2, nums)))
print(list(filter(lambda x: x%2==0, nums)))

functools.reduce()

reduce(func, seq) riduce una sequenza combinandone gli elementi: reduce(lambda a,b: a+b, [1,2,3,4]) restituisce 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Verifica di callable

callable(obj) restituisce True se obj può essere richiamato. Funzioni, classi e oggetti con __call__ sono richiamabili.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Introspezione delle funzioni

func.__name__, func.__doc__, func.__annotations__, inspect.signature(func) forniscono metadati sulla funzione.
import inspect
def greet(name: str) -> str:
    '''Returns a greeting.'''
    return f'Hi {name}'
print(greet.__name__, greet.__annotations__)
print(inspect.signature(greet))

Controllo rapido

Che cos'è una closure in Python?

Riepilogo

Le funzioni sono oggetti di prima classe. È possibile passarle come argomenti, restituirle dalle funzioni e memorizzarle nei contenitori. Le closure catturano l'ambito che le contiene. lambda è utile per semplici funzioni su una riga.

Continui

Ottimi progressi! Continui per padroneggiare il prossimo concetto.

Domande Frequenti

La lezione «Funzioni come oggetti di prima classe» è gratuita?

Sì — il testo completo di «Funzioni come oggetti 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 come oggetti di prima classe»?

Comprenda le closure e il passaggio delle funzioni come argomenti. 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 come oggetti 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

  1. Funzioni come oggetti di prima classe
  2. Scrittura di decorator personalizzati
  3. Il decorator @property
  4. @classmethod e @staticmethod
← Torna a Python Academy