Skip to content

Commit 064581c

Browse files
committed
added function as arguments in section 05
1 parent b7943a8 commit 064581c

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

05_funzioni_moduli.ipynb

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,42 @@
177177
"- Se invece passi un valore come `\"AI\"`, `system` non sarà più `None` e la condizione `if` sarà `True`, eseguendo il primo `print` che aggiunge il prefisso `[AI]`."
178178
]
179179
},
180+
{
181+
"cell_type": "markdown",
182+
"metadata": {},
183+
"source": [
184+
"### Funzioni come argomenti\n",
185+
"\n",
186+
"In Python, le funzioni sono considerate **oggetti di prima classe**, il che significa che possono essere trattate come qualsiasi altro tipo di dato, ad esempio stringhe o numeri. Di conseguenza, è possibile passare una funzione come argomento a un'altra funzione. Questo pattern è molto potente e permette di scrivere codice flessibile e riutilizzabile, specialmente nella programmazione funzionale.\n",
187+
"\n",
188+
"Quando si passa una funzione come argomento, non si usano le parentesi `()`, poiché non si vuole chiamare la funzione, ma semplicemente passare il suo riferimento."
189+
]
190+
},
191+
{
192+
"cell_type": "code",
193+
"execution_count": null,
194+
"metadata": {},
195+
"outputs": [],
196+
"source": [
197+
"def applica_operazione(a, b, operazione):\n",
198+
" # Chiama la funzione passata come argomento\n",
199+
" return operazione(a, b)\n",
200+
"\n",
201+
"def somma(x, y):\n",
202+
" return x + y\n",
203+
"\n",
204+
"def sottrai(x, y):\n",
205+
" return x - y\n",
206+
"\n",
207+
"# Passiamo la funzione `somma` come argomento\n",
208+
"risultato_somma = applica_operazione(10, 5, somma)\n",
209+
"print(f\"Risultato della somma: {risultato_somma}\")\n",
210+
"\n",
211+
"# Passiamo la funzione `sottrai` come argomento\n",
212+
"risultato_sottrazione = applica_operazione(10, 5, sottrai)\n",
213+
"print(f\"Risultato della sottrazione: {risultato_sottrazione}\")"
214+
]
215+
},
180216
{
181217
"cell_type": "markdown",
182218
"metadata": {},
@@ -366,6 +402,21 @@
366402
"outputs": [],
367403
"source": []
368404
},
405+
{
406+
"cell_type": "markdown",
407+
"metadata": {},
408+
"source": [
409+
"### Esercizio 5: Funzione come argomento\n",
410+
"Crea una funzione `applica_formato(stringa, formato)` che prenda una stringa e una funzione `formato` come argomenti. L'obiettivo è far sì che `applica_formato` chiami la funzione `formato` con la stringa e stampi il risultato. Poi, crea due funzioni, `maiuscolo` e `minuscolo`, e usale come argomenti per `applica_formato`."
411+
]
412+
},
413+
{
414+
"cell_type": "code",
415+
"execution_count": null,
416+
"metadata": {},
417+
"outputs": [],
418+
"source": []
419+
},
369420
{
370421
"cell_type": "markdown",
371422
"metadata": {},
@@ -476,6 +527,41 @@
476527
"```"
477528
]
478529
},
530+
{
531+
"cell_type": "code",
532+
"execution_count": null,
533+
"metadata": {},
534+
"outputs": [],
535+
"source": []
536+
},
537+
{
538+
"cell_type": "markdown",
539+
"metadata": {},
540+
"source": [
541+
"### Soluzione Esercizio 5: Funzione come argomento"
542+
]
543+
},
544+
{
545+
"cell_type": "code",
546+
"execution_count": null,
547+
"metadata": {},
548+
"outputs": [],
549+
"source": [
550+
"def applica_formato(stringa, formato):\n",
551+
" risultato = formato(stringa)\n",
552+
" print(f\"La stringa formattata è: {risultato}\")\n",
553+
"\n",
554+
"def maiuscolo(testo):\n",
555+
" return testo.upper()\n",
556+
"\n",
557+
"def minuscolo(testo):\n",
558+
" return testo.lower()\n",
559+
"\n",
560+
"# Esempio di utilizzo\n",
561+
"esegui_operazione(\"Ciao mondo\", maiuscolo)\n",
562+
"esegui_operazione(\"Ciao mondo\", minuscolo)"
563+
]
564+
},
479565
{
480566
"cell_type": "code",
481567
"execution_count": null,

0 commit comments

Comments
 (0)