Come implementare le funzioni Switch Case in Python? [2022]
Pubblicato: 2021-01-08Sommario
introduzione
Ti sei mai chiesto se esiste un'alternativa per scrivere quelle complesse istruzioni If-else in Python? Se non si desidera che più istruzioni "If" ingombrano il codice, è consigliabile utilizzare l'istruzione Switch case che fornisce un modo più pulito e rapido per implementare il flusso di controllo nel codice. A differenza di C++, Java, Ruby e altri linguaggi di programmazione, Python non fornisce un'istruzione switch case, ma offre alcune soluzioni alternative per far funzionare questa istruzione.
Ad esempio, Python ti consente di creare frammenti di codice che funzionano come le istruzioni Python Switch case negli altri linguaggi di programmazione. Più avanti in questo blog imparerai di più sulle modalità di implementazione delle dichiarazioni switch-case. Se sei interessato a saperne di più su Python, dai un'occhiata ai nostri corsi di scienza dei dati.
Che cos'è un'istruzione Switch in Python?
In generale, lo switch è un meccanismo di controllo che verifica il valore memorizzato in una variabile ed esegue le istruzioni case corrispondenti. L'istruzione Switch case introduce il flusso di controllo nel programma e garantisce che il codice non sia ingombrato da più istruzioni "if".
Quindi, il tuo codice sembra meticoloso e trasparente per gli spettatori. È una meravigliosa funzionalità di programmazione che i programmatori utilizzano per implementare il flusso di controllo nel loro codice. L'istruzione Switch case funziona confrontando i valori specificati nelle istruzioni case con le variabili nel codice.
Come implementare l'istruzione Switch Case di Python
Se hai sempre codificato in linguaggi come C++ o Java, potresti trovare strano che Python non abbia un'istruzione switch case. Invece, Python offre numerose soluzioni alternative come un dizionario, classi Python o funzioni lambda Python per implementare le istruzioni switch-case.
Se vuoi conoscere il motivo esatto per cui non hai un'istruzione switch case in Python, dovresti controllare PEP 3103 .
Prima di approfondire queste alternative, vediamo innanzitutto come funziona tipicamente una funzione switch case in altri linguaggi di programmazione.
Nell'esempio seguente, abbiamo utilizzato il linguaggio di programmazione C
cambia (mese dell'anno) { caso 1: printf(“%s”, gennaio); rottura; caso 2: printf(“%s”, febbraio); rottura; caso 3: printf(“%s”, marzo); rottura; caso 4: printf(“%s”, aprile); rottura; caso 5: printf(“%s”, maggio); rottura; caso 6: printf(“%s”, giugno); rottura; caso 7: printf(“%s”, luglio); rottura; caso 8: printf(“%s”, agosto); rottura; caso 9: printf(“%s”, settembre); rottura; caso 10: printf(“%s”, ottobre); rottura; caso 11: printf(“%s”, novembre); rottura; caso 12: printf(“%s”, dicembre); rottura; predefinito: printf(“Mese errato”); rottura; } |
Ora, approfondiamo le alternative alla funzione switch case di Python e comprendiamo come funzionano queste alternative con l'aiuto di esempi.
Leggi: Opportunità di carriera in Python: tutto ciò che devi sapere
Utilizzo della mappatura del dizionario
Se hai familiarità con altri linguaggi di programmazione, devi sapere che il dizionario utilizza coppie chiave-valore per memorizzare un gruppo di oggetti in memoria. Quando si utilizza un dizionario come alternativa alle istruzioni switch-case, le chiavi della coppia chiave-valore funzionano come un caso.
L'esempio seguente mostra l'implementazione dell'istruzione switch case utilizzando un dizionario. Qui stiamo definendo una funzione month() per stampare quale mese è un mese dell'anno.
Innanzitutto, inizia creando istruzioni case e scrivi singole funzioni per ciascun caso. Assicurati di scrivere una funzione che affronti il caso predefinito.
def gennaio(): ritorno “gennaio” def febbraio(): ritorno “febbraio” def marzo(): ritorno "marzo" def aprile(): ritorno “Aprile” def può(): ritorno "maggio" def giugno(): ritorno “giugno” def luglio(): ritorno “luglio” def agosto(): ritorno “agosto” def settembre(): ritorno “settembre” def ottobre(): ritorno “Ottobre” def novembre(): ritorno “Novembre” def dicembre(): ritorno “Dicembre” def default(): restituisce “Mese errato” |
Quindi, crea un oggetto dizionario in Python e memorizza tutte le funzioni che hai definito nel tuo programma.
commutatore = { 0: 'gennaio', 1: 'febbraio', 2: 'marzo', 3: 'aprile', 4: 'può', 5: 'giugno', 6: 'luglio', 7: 'agosto', 8: 'settembre', 9: 'ottobre', 10: 'novembre', 11: 'dicembre' } |
Infine, crea una funzione switch nel tuo programma che dovrebbe accettare un intero come input, eseguire una ricerca nel dizionario e invocare le funzioni corrispondenti.
def mese (mese dell'anno): return switcher.get(monthOfYear, default)() |
Il codice completo sarà simile a questo
def gennaio(): ritorno “gennaio” def febbraio(): ritorno “febbraio” def marzo(): ritorno "marzo" def aprile(): ritorno “Aprile” def può(): ritorno "maggio" def giugno(): ritorno “giugno” ![]() def luglio(): ritorno “luglio” def agosto(): ritorno “agosto” def settembre(): ritorno “settembre” def ottobre(): ritorno “Ottobre” def novembre(): ritorno “Novembre” def dicembre(): ritorno “Dicembre” def default(): restituisce “Mese errato”
commutatore = { 0: 'gennaio', 1: 'febbraio', 2: 'marzo', 3: 'aprile', 4: 'può', 5: 'giugno', 6: 'luglio', 7: 'agosto', 8: 'settembre', 9: 'ottobre', 10: 'novembre', 11: 'dicembre' } def mese (mese dell'anno): return switcher.get(monthOfYear, default)() stampa(interruttore(1)) stampa(interruttore(0)) |
Il codice precedente stampa il seguente output
febbraio gennaio |
Leggi anche: 42 entusiasmanti idee e argomenti per progetti Python per principianti
Utilizzo delle classi Python
Puoi anche usare le classi Python come alternativa all'implementazione di istruzioni switch-case. Una classe è un costruttore di oggetti che ha proprietà e metodi. Cerchiamo di capirlo ulteriormente con l'aiuto dello stesso esempio sopra. Qui definiremo un metodo switch all'interno di una classe switch Python.
Esempio
Innanzitutto, definiremo un metodo switch all'interno di una classe switch Python che prende un mese dell'anno come argomento, converte il risultato in una stringa.
classe PythonSwitch: def mese(self, monthOf Year): default = “Mese errato” return getattr(self, 'case_' + str(monthOf Year), lambda: default)() |
Nota: nell'esempio sopra, abbiamo usato due cose: la parola chiave lambda e il metodo getattr().
- Usiamo la parola chiave lambda per definire una funzione anonima in Python. La parola chiave Lambda richiama la funzione predefinita quando un utente immette un input non valido.
- getattr() viene utilizzato per invocare una funzione in Python.
Ora, crea singole funzioni per ogni caso.
def gennaio (auto): ritorno “gennaio”
def febbraio(auto): ritorno “febbraio” def marzo (auto): ritorno “Marzo”
def aprile (auto): ritorno “Aprile”
def può (auto): ritorno “Maggio”
def giugno (auto): ritorno “giugno” def luglio (auto): ritorno “luglio”
def agosto (auto): ritorno “Agosto”
def settembre (auto): ritorno “settembre” def ottobre (auto): ritorno “Ottobre”
def novembre(auto): ritorno “Novembre”
def dicembre(auto): ritorno “Dicembre” |
Il codice completo sarà simile a questo
classe PythonSwitch: def mese(self, monthOf Year): default = “Mese errato” return getattr(self, 'case_' + str(monthOf Year), lambda: default)() def gennaio (auto): ritorno “gennaio”
def febbraio(auto): ritorno “febbraio”
def marzo (auto): ritorno “Marzo”
def aprile (auto): ritorno “Aprile”
def può (auto): ritorno “Maggio”
def giugno (auto): ritorno “giugno” def luglio (auto): ritorno “luglio”
def agosto (auto): ritorno “Agosto”
def settembre (auto): ritorno “settembre” def ottobre (auto): ritorno “Ottobre”
def novembre(auto): ritorno “Novembre”
def dicembre(auto): ritorno “Dicembre” my_switch = PythonSwitch() stampa (mio_interruttore.mese(1)) stampa (mio_interruttore.mese(10)) |
Il codice precedente stampa il seguente output
gennaio ottobre |
Dai un'occhiata: Stipendio per sviluppatori Python in India
Conclusione
In questo blog, hai appreso le dichiarazioni switch-case, quali sono le alternative alle dichiarazioni switch-case e come usarle. Come spiegato sopra, Python non ha una funzione switch case incorporata, ma puoi sempre usare queste alternative per rendere il tuo codice pulito e ordinato e ottenere prestazioni migliori.
Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al programma Executive PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1 -on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.
Distinguere tra un dizionario ordinario e un dizionario Python.
Python Dictionary o "Dict" è una struttura dati incorporata di Python che viene utilizzata per memorizzare una raccolta non ordinata di elementi. A differenza di altre strutture dati Python che memorizzano valori singoli, la struttura dati del dizionario memorizza coppie chiave-valore in cui ogni chiave è univoca. Non ricorda l'ordine di inserimento delle coppie chiave-valore e scorre le chiavi. D'altra parte, un Ordered Dictionary o OrderedDict tiene traccia dell'ordine di inserimento delle coppie chiave-valore. Consuma anche più memoria di un normale dizionario in Python a causa della sua implementazione di elenchi doppiamente collegati. Se elimini e reinserisci la stessa chiave, verrà inserita nella sua posizione originale poiché OrderedDict ricorda l'ordine di inserimento.
Quali operazioni di namedtuple lo rendono un'opzione conveniente da utilizzare per i casi di switch?
La namedtuple in Python esegue varie operazioni. Di seguito è riportato un elenco di alcune delle operazioni più comuni eseguite da namedtuple. Gli elementi in una namedtuple sono accessibili dai loro indici, a differenza di un dizionario. Il modo alternativo per accedere agli elementi è tramite il loro nome chiave. La funzione make() restituisce una namedtuple. La funzione _asadict() restituisce un dizionario ordinato che è costruito dai valori mappati. La funzione _replace() prende un nome chiave come argomento e cambia i valori mappati su di essa. La funzione _fileds() restituisce tutti i nomi chiave della datatupla indicata.
Quando preferiamo gli elenchi per la memorizzazione dei dati?
L'elenco Python è considerato la migliore struttura di dati per archiviare i dati nei seguenti scenari: un elenco può essere utilizzato per memorizzare vari valori con tipi di dati diversi ed è accessibile solo dai rispettivi indici. Quando è necessario eseguire operazioni matematiche sugli elementi, è possibile utilizzare un elenco poiché consente di operare direttamente sugli elementi matematicamente. Poiché un elenco può essere ridimensionato, può essere utilizzato per memorizzare i dati quando non si è certi del numero di elementi da memorizzare. Gli elementi dell'elenco sono facilmente modificabili e possono anche memorizzare elementi duplicati, a differenza di set e dizionario.