
PROGRAMMAZIONE PYTHON
Nei linguaggi di programmazione, gli oggetti richiamabili sono tipicamente associati a funzioni, e per una buona ragione. Le funzioni sono forse i migliori esempi di oggetti richiamabili, ma non sono gli unici. In Python ci sono molti altri tipi richiamabili, che possono essere incredibilmente utili e potenti. Puoi anche creare i tuoi oggetti richiamabili. Questo articolo riguarda entrambi.
Un richiamabile è un oggetto che può essere chiamato utilizzando una coppia di parentesi, come ad esempio sotto, dove utilizziamo la funzione integrata sum()
:
>>> sum((1, 1, 1))
3
Una chiamata a un callable, a seconda della sua definizione, può essere
- senza argomenti, come in
no_args_callable()
- o una serie di argomenti posizionali e/o parole chiave, come in
args_callable(arg1, arg2)
,args_callable(arg1, arg2=value2)
Oargs_callable(arg1=value1, arg2=value2)
Sopra, ho descritto un chiamabile come un sostantivo. La parola richiamabiletuttavia, è usato anche come aggettivo, significato essere un richiamabile. Pertanto, un callable è uguale a un oggetto callable.
Python ha una funzione incorporata, callable()
che controlla se un oggetto è richiamabile o, in altre parole, se è richiamabile. Considera i seguenti esempi di callable effettivi:
>>> callable(lambda x: x + 1)
True
>>> callable(print)
True
>>> def foo(): ...
>>> callable(foo)
True
Gli oggetti seguenti non sono richiamabili:
>>> callable(None)
False
>>> callable(10)
False
>>> callable("hello")
False
Gli esempi positivi sopra riportati riguardavano le funzioni, che sono ciò che la maggior parte delle persone associa ai callable. Tuttavia, in realtà, ogni classe Python è richiamabile. Se conosci le basi della programmazione orientata agli oggetti in Python, sai che per creare un’istanza di una classe, procedi come segue:¹
>>> class Empty: ...
Sembra esattamente una chiamata, e lo è – ed è per questo che le classi Python sono richiamabili.
Questo codice mostra che il Empty
è richiamabile, ma la verità è che ogni singola classe Python è richiamabile. Tuttavia, in Python…
Fonte: towardsdatascience.com