|
177 | 177 | "- 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]`." |
178 | 178 | ] |
179 | 179 | }, |
| 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 | + }, |
180 | 216 | { |
181 | 217 | "cell_type": "markdown", |
182 | 218 | "metadata": {}, |
|
366 | 402 | "outputs": [], |
367 | 403 | "source": [] |
368 | 404 | }, |
| 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 | + }, |
369 | 420 | { |
370 | 421 | "cell_type": "markdown", |
371 | 422 | "metadata": {}, |
|
476 | 527 | "```" |
477 | 528 | ] |
478 | 529 | }, |
| 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 | + }, |
479 | 565 | { |
480 | 566 | "cell_type": "code", |
481 | 567 | "execution_count": null, |
|
0 commit comments