|
55 | 55 | "metadata": {}, |
56 | 56 | "outputs": [], |
57 | 57 | "source": [ |
58 | | - "# Definition of a function with positional arguments\n", |
| 58 | + "# Definizione di una funzione con argomenti posizionali\n", |
59 | 59 | "def greet(name, surname):\n", |
60 | 60 | " print(f\"Hello, {name} {surname}!\")\n", |
61 | 61 | "\n", |
62 | 62 | "greet(\"Mario\", \"Rossi\")\n", |
63 | 63 | "\n", |
64 | | - "# Definition of a function with keyword arguments\n", |
| 64 | + "# Definizione di una funzione con argomenti nominali\n", |
65 | 65 | "def animal_description(species, name):\n", |
66 | 66 | " print(f\"This animal is a {species} named {name}.\")\n", |
67 | 67 | "\n", |
68 | 68 | "animal_description(name=\"Fido\", species=\"dog\")" |
69 | 69 | ] |
70 | 70 | }, |
| 71 | + { |
| 72 | + "cell_type": "markdown", |
| 73 | + "metadata": {}, |
| 74 | + "source": [ |
| 75 | + "### Argomenti variabili: *args e **kwargs 🧩\n", |
| 76 | + "\n", |
| 77 | + "Non sempre è possibile sapere in anticipo quanti argomenti verranno passati a una funzione. In questi casi si possono usare gli **argomenti variabili**.\n", |
| 78 | + "\n", |
| 79 | + "- **`*args`** (posizionali variabili): permette di passare un numero arbitrario di **argomenti posizionali**. All’interno della funzione, `args` è una *tupla* che contiene tutti i valori passati.\n", |
| 80 | + "\n", |
| 81 | + "- **`**kwargs`** (nominali variabili): permette di passare un numero arbitrario di **argomenti nominali (keyword)**. All’interno della funzione, `kwargs` è un *dizionario* che associa ogni nome di parametro al suo valore.\n", |
| 82 | + "\n", |
| 83 | + "Questi meccanismi rendono le funzioni più flessibili e riutilizzabili." |
| 84 | + ] |
| 85 | + }, |
| 86 | + { |
| 87 | + "cell_type": "code", |
| 88 | + "execution_count": null, |
| 89 | + "metadata": {}, |
| 90 | + "outputs": [], |
| 91 | + "source": [ |
| 92 | + "# Example with *args\n", |
| 93 | + "def sum(*args):\n", |
| 94 | + " print(\"Args:\", args)\n", |
| 95 | + " return sum(args)\n", |
| 96 | + "\n", |
| 97 | + "print(sum(2, 4, 6))\n", |
| 98 | + "print(sum(1, 2, 3, 4, 5))\n", |
| 99 | + "\n", |
| 100 | + "# Example con **kwargs\n", |
| 101 | + "def person_info(**kwargs):\n", |
| 102 | + " print(\"Args:\", kwargs)\n", |
| 103 | + " for key, val in kwargs.items():\n", |
| 104 | + " print(f\"{key}: {val}\")\n", |
| 105 | + "\n", |
| 106 | + "person_info(name=\"Luca\", age=30, city=\"Milano\")" |
| 107 | + ] |
| 108 | + }, |
| 109 | + { |
| 110 | + "cell_type": "markdown", |
| 111 | + "metadata": {}, |
| 112 | + "source": [ |
| 113 | + "#### Riepilogo 📘\n", |
| 114 | + "\n", |
| 115 | + "| Tipo di argomento | Sintassi | Esempio di uso | Tipo dentro la funzione |\n", |
| 116 | + "|--------------------|-----------|----------------|--------------------------|\n", |
| 117 | + "| Posizionali | `def f(a, b)` | `f(1, 2)` | Variabili separate |\n", |
| 118 | + "| Nominali (keyword) | `def f(a=1)` | `f(a=3)` | Variabili separate |\n", |
| 119 | + "| Variabili (*args) | `def f(*args)` | `f(1,2,3)` | Tupla |\n", |
| 120 | + "| Variabili (**kwargs)| `def f(**kwargs)` | `f(x=1, y=2)` | Dizionario |" |
| 121 | + ] |
| 122 | + }, |
71 | 123 | { |
72 | 124 | "cell_type": "markdown", |
73 | 125 | "metadata": {}, |
|
0 commit comments