2009-03-27 4 views
111

Je me surprends souvent à écrire if/elif/else construit en python, et je veux inclure des options qui peuvent se produire, mais pour lesquelles l'action correspondante est de ne rien faire. Je réalise que je pourrais juste exclure ces instructions if, mais pour la lisibilité, je trouve qu'il est utile de les inclure toutes, de sorte que si vous regardez à travers le code, vous pouvez voir ce qui se passe à la suite de chaque option. Comment puis-je coder le no-op? À l'heure actuelle, je fais comme ceci:Quelle est la manière standard de faire un no-op en python?

no_op = 0 

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

(. Le code est en fait un peu plus que cela, et plus compliquée Ceci est juste pour illustrer la structure). Je n'aime pas utiliser une variable comme un no-op, mais c'est la façon la plus simple que je pouvais penser. Y a-t-il un meilleur moyen?

+0

Ce Ellipsis ('' ...) Il faut aussi signaler: http://stackoverflow.com/a/6189281/38281 – Patrick

Répondre

217

Utilisez pass pour no-op:

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

Et voici un autre exemple:

def f(): 
    pass 

Ou:

class c: 
    pass 
+0

Than k vous! C'est ce que je cherchais. – Ben

+3

+1: Référence la documentation –

+3

En tant que doublure, j'utilise 'doSQL = lambda * x: x'. –

22

Que diriez-vous pass?

3

Si vous avez besoin d'une fonction qui se comporte comme un nop, essayez

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

Parfois, je fais des trucs comme ça quand je fais des dépendances en option:

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: Aucune –

Questions connexes