Migliori pratiche per le istruzioni condizionali in Python

Migliori pratiche per le istruzioni condizionali in Python

Questo articolo spiega le migliori pratiche per le istruzioni condizionali in Python.

YouTube Video

Migliori pratiche per le istruzioni condizionali in Python

L'istruzione if in Python è una struttura fondamentale per implementare le diramazioni condizionali, e influisce notevolmente sulla leggibilità e sulla manutenzione del codice. Qui discuteremo in dettaglio le migliori pratiche per l'uso delle istruzioni if.

Usare espressioni condizionali esplicite

Scrivi le espressioni condizionali in modo conciso ed esplicito, evitando affermazioni ridondanti.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • In Python, puoi indicare che una condizione è vera scrivendo if condition:.

Combinare più condizioni

Quando combini più condizioni, utilizza and o or. Tuttavia, quando le espressioni condizionali diventano complesse, la leggibilità può diminuire, quindi considera i seguenti aggiustamenti:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • Dividendo le condizioni e assegnandole a variabili, si può migliorare la leggibilità.

and/or valutazione a cortocircuito

Nelle espressioni condizionali che utilizzano and o or, se il risultato può essere determinato solo dal valore a sinistra, si verifica una valutazione a cortocircuito e il lato destro non viene valutato. Comprendere questo ti aiuta a evitare elaborazioni non necessarie e a prevenire errori.

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • Utilizzando la valutazione a cortocircuito, puoi migliorare l'efficienza e la sicurezza dell'elaborazione.

Precedenza di and e or

and ha una precedenza maggiore rispetto a or. Pertanto, combinando le condizioni in modo ingenuo, potresti ottenere risultati non desiderati. È importante utilizzare le parentesi per rendere chiare le tue intenzioni.

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • Utilizzando le parentesi, puoi chiarire la precedenza di and e or, riducendo il rischio di bug inaspettati.

Comprendere Truthy e Falsy

In Python, i seguenti valori vengono valutati come False:.

  • Nessuno
  • Falso
  • Il numero 0 (incluso 0.0)
  • Tipi di sequenze vuote (come liste, tuple o stringhe vuote)
    • Esempi: [], (), ""
  • Dizionario vuoto
    • Esempio: {}

Sfruttare questo può aiutare a semplificare le tue espressioni condizionali.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

Uso corretto di elif e else

Quando valuti più condizioni, utilizza elif. Utilizza else per definire un comportamento predefinito alla fine.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • else non è obbligatorio. Se tutte le condizioni sono coperte, può essere omesso.
  • Fai attenzione all'ordine delle espressioni condizionali e disponile in modo logico senza ridondanza.

Limita la profondità dell'annidamento.

Un annidamento profondo delle istruzioni if rende il codice più difficile da leggere.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • Utilizzare ritorni anticipati può ridurre l'annidamento e rendere il codice più conciso.

Evita di utilizzare istruzioni if su una sola riga.

È possibile scrivere istruzioni if su una sola riga, ma ciò può ridurre la leggibilità.

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • L'uso di istruzioni if su una sola riga è accettabile solo per condizioni o azioni brevi, ma evita di scrivere codice eccessivamente prolisso.

Semplificazione con l'operatore ternario o or

Per rami condizionali semplici, utilizzare l'operatore ternario o or può rendere il tuo codice più conciso. Tuttavia, un uso eccessivo può rendere il codice più difficile da leggere, quindi andrebbero usati solo in condizioni semplici e intuitive.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • Per condizioni semplici, utilizzare l'operatore ternario o or può rendere il codice più breve e facile da capire.

Memorizzare espressioni condizionali.

Le espressioni condizionali che coinvolgono calcoli onerosi o chiamate a funzioni possono essere memorizzate in variabili per migliorare le prestazioni.

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

Riepilogo

Le istruzioni if di Python sono strumenti semplici e potenti, ma un uso improprio può rendere il codice complesso e difficile da leggere. Adottando le migliori pratiche introdotte qui, è possibile migliorare la leggibilità, la manutenibilità e l'efficienza del codice.

Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.

YouTube Video