web-dev-qa-db-fra.com

Quel est l'équivalent Python pour une instruction case / switch?

Je voudrais savoir s'il existe un équivalent Python pour l'instruction case, comme les exemples disponibles sur VB.net ou C #.

379
user1524844

Alors que les documents officiels sont heureux de ne pas fournir de commutateur, j'ai vu un solution utilisant des dictionnaires .

Par exemple:

# define the function blocks
def zero():
    print "You typed zero.\n"

def sqr():
    print "n is a perfect square\n"

def even():
    print "n is an even number\n"

def prime():
    print "n is a prime number\n"

# map the inputs to the function blocks
options = {0 : zero,
           1 : sqr,
           4 : sqr,
           9 : sqr,
           2 : even,
           3 : prime,
           5 : prime,
           7 : prime,
}

Ensuite, le bloc commutateur équivalent est appelé:

options[num]()

Cela commence à s'effondrer si vous dépendez fortement de la chute.

491
Prashant Kumar

Le remplacement direct est if/Elif/else.

Cependant, dans de nombreux cas, il existe de meilleures façons de le faire en Python. Voir " Remplacements pour l'instruction switch en Python? ".

147
Lennart Regebro