CodeGym /Corso Java /Python SELF IT /Lavoro avanzato con i parametri

Lavoro avanzato con i parametri

Python SELF IT
Livello 6 , Lezione 5
Disponibile

11.1 Numero infinito di parametri

In Python le funzioni possono essere progettate per accettare un numero infinito di parametri. Questo si ottiene tramite argomenti passati con *args per i parametri normali e **kwargs per i parametri nominativi.

Uso di *args

*args permette a una funzione di accettare un numero arbitrario di argomenti posizionali, che la funzione percepirà come una tupla. Ecco un esempio:


def print_all(*args):
    for item in args:
        print(item)
        
print_all(1, 'apple', True)  # stamperà 1, apple e True.
        

La variabile args conterrà una tupla di tutti i parametri che sono stati passati alla funzione durante la chiamata.

Uso di **kwargs

**kwargs funziona in modo simile a *args, ma per gli argomenti nominativi, rappresentati come un dizionario. Ciò permette alla funzione di accettare un numero qualsiasi di argomenti nominativi:


def print_named_items(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
        
print_named_items(fruit='apple', number=1)  # stamperà fruit: apple e number: 1
        

Questi meccanismi rendono le funzioni estremamente flessibili e utili negli scenari in cui il numero di parametri non è noto in anticipo, ad esempio nello sviluppo di API o nelle funzioni di gestione degli eventi.

Esamineremo questi casi più in dettaglio più avanti, ma dovresti sapere che in Python all'interno di una funzione puoi accedere facilmente a tutti gli argomenti che le sono stati passati. E puoi passare alla funzione tutto ciò che desideri.

11.2 Indicazione dei tipi

Come saprai, le variabili in Python non hanno un tipo specificato in anticipo. A qualsiasi variabile può essere assegnato un valore di qualsiasi tipo, e nella riga successiva un valore di un nuovo tipo, ecc.

Questo è molto comodo per i piccoli programmi e non molto comodo per quelli grandi. Quando un programma è molto grande e il numero di funzioni raggiunge le migliaia, il programmatore non può ricordare quali dati specifici devono essere passati alla funzione e in quale ordine.

Nei linguaggi con tipizzazione statica, l'IDE stesso suggerisce ai programmatori quali parametri e di quali tipi devono essere passati durante la chiamata di una funzione. Ma Python – è comunque un linguaggio con tipizzazione dinamica, e qui da queste suggerimenti non c'è modo di derivarle.

Pertanto, i creatori di Python hanno inventato qualcosa come type hinting. È qualcosa di simile ai tipi di variabili, ma sono più raccomandazioni che tipi. I tipi specificati non portano alcuna limitazione.

L'indicazione dei tipi è stata introdotta in Python 3.5 ed è diventata popolare grazie allo standard PEP 484. È un meccanismo che consente ai programmatori di definire i tipi attesi di variabili, argomenti e valori restituiti delle funzioni.

Sebbene Python rimanga un linguaggio tipizzato dinamicamente, l'indicazione dei tipi aggiunge chiarezza e supporta il controllo statico dei tipi. Ecco alcuni esempi di indicazione dei tipi:


def add_numbers(a: int, b: int) -> int:
    return a + b
        

Il tipo di variabile viene indicato con i due punti, mentre il tipo del risultato restituito della funzione con la freccia.

I vantaggi che l'indicazione del tipo-raccomandazione offre:

  • Miglioramento della documentazione: L'indicazione esplicita dei tipi rende il codice auto-documentante.
  • Completamento automatico migliore: Gli editor di codice possono utilizzare le informazioni sui tipi per migliorare il completamento automatico.
  • Assistenza nel debugging: Il controllo statico dei tipi può identificare potenziali errori prima che il programma venga eseguito.

Strumenti per lavorare con i tipi

Python stesso non reagisce in alcun modo ai tipi dichiarati delle variabili. Invece Python ha un'utility speciale — mypy — un popolare analizzatore statico dei tipi che aiuta a individuare errori nel codice che utilizza l'indicazione dei tipi.

1
Опрос
Funzioni in Python,  6 уровень,  5 лекция
недоступен
Funzioni in Python
Funzioni in Python
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION