A volte può essere utile specificare gli argomenti di una funzione tramite il loro nome, rendendo chiaro cosa rappresenta ciascun argomento indipendentemente dalla posizione. In Python, questi argomenti sono chiamati argomenti per parola chiave (keyword arguments). Gli argomenti solo per parola chiave sono simili, ma con una particolarità: possono essere forniti solo tramite parola chiave, mai per posizione.
Per definire una funzione con argomenti solo per parola chiave, si utilizza il simbolo * nella firma della funzione. Qualsiasi argomento che appare dopo * può essere fornito solo tramite la sua parola chiave.
Considera una funzione per calcolare l'area di un rettangolo. Richiede due argomenti: length e width. Inoltre, può accettare un argomento booleano opzionale, rounded, per decidere se restituire l'area esatta (con decimali) o un'area arrotondata (senza decimali). Vogliamo che rounded sia un argomento solo per parola chiave, per evitare confusione quando si chiama la funzione:
def rectangle_area(length, width, *, rounded=False):
area = length * width
return round(area) if rounded else area
print(rectangle_area(5.3, 4.2)) # Stampa 22.26, rounded non è fornito quindi assume il valore predefinito False
print(rectangle_area(5.3, 4.2, rounded=True)) # Stampa 22, rounded è fornito e impostato a True
print(rectangle_area(5.3, 4.2, True)) # Errore! rounded deve essere fornito per parola chiave.
print(rectangle_area(5.3, 4.2, False)) # Errore! rounded deve essere fornito per parola chiave.
print(rectangle_area(length=5.3, width=4.2, rounded=True)) # Stampa 22
Possiamo chiamare questa funzione usando argomenti posizionali per length e width, e un argomento per parola chiave per rounded. Se qualcuno prova a fornire il terzo argomento per posizione, si verificherà un errore.
Nota che puoi comunque utilizzare la sintassi per parola chiave anche per gli argomenti posizionali se lo desideri, poiché qui non sono definiti come solo posizionali.
Sfida: Ripeti il Testo
Hai il compito di scrivere una funzione repeat_text che ripete un testo specificato un certo numero di volte. La funzione dovrebbe accettare due argomenti: text e times. L'argomento text è la stringa di testo da ripetere e times è il numero di ripetizioni.
L'argomento times dovrebbe essere un argomento solo per parola chiave con un valore predefinito di 1, il che significa che se l'argomento times non è fornito, la funzione dovrebbe restituire il testo originale così com'è.
La funzione dovrebbe restituire una stringa che è il testo ripetuto times numero di volte.
La prima riga dell'input contiene una stringa text. La seconda riga contiene un intero times.
La funzione dovrebbe restituire una stringa che è il text ripetuto times numero di volte.
Input
Output
Hello World!
3
Hello World!Hello World!Hello World!
Nota: Non c'è spazio o alcun altro delimitatore tra i testi ripetuti nell'output.