2009-03-27 7 views
111

Spesso mi trovo a scrivere se/elif/else costruisce in python, e voglio includere opzioni che possono verificarsi, ma per le quali l'azione corrispondente è di non fare nulla. Mi rendo conto che potrei solo escludere quelle se le affermazioni, ma per la leggibilità trovo che sia utile includerle tutte, in modo che se stai guardando attraverso il codice puoi vedere cosa succede come risultato di ciascuna opzione. Come codice il no-op? Attualmente, sto facendo in questo modo:Qual è un modo standard per fare un no-op in python?

no_op = 0 

if x == 0: 
    y = 2 * a 
elif x == 1: 
    z = 3 * b 
elif x == 3: 
    no_op 

(. Il codice è in realtà un po 'più lungo di quello, e più complicato Questo è solo per illustrare la struttura).

Non mi piace usare una variabile come no-op, ma è il modo più pulito che potessi pensare. C'è un modo migliore?

+0

Questo puntini di sospensione (... '') merita una menzione: http://stackoverflow.com/a/6189281/38281 – Patrick

risposta

217

Usa pass per no-op:

if x == 0: 
    pass 
else: 
    print "x not equal 0" 

Ed ecco un altro esempio:

def f(): 
    pass 

Oppure:

class c: 
    pass 
+0

Than k tu! Questo è quello che stavo cercando. – Ben

+3

+1: riferimento alla documentazione –

+3

Come one-liner, utilizzo 'doSQL = lambda * x: x'. –

22

Come su pass?

3

Se avete bisogno di una funzione che si comporta come un nop, provare

nop = lambda *a, **k: None 
nop() 

a volte faccio cose come questa, quando sto facendo dipendenze opzionali:

try: 
    import foo 
    bar=foo.bar 
    baz=foo.baz 
except: 
    bar=nop 
    baz=nop 

# Doesn't break when foo is missing: 
bar() 
baz() 
+0

nop = lambda * x: Nessuno –

Problemi correlati