Existe-t-il un équivalent Python pour la fonction switch
déclaration ?
Le dictionnaire doit venir après les définitions des fonctions
Existe-t-il un équivalent Python pour la fonction switch
déclaration ?
Dans Python 3.10, ils ont introduit la fonction filtrage par motif .
Exemple de la Documentation Python :
def http_error(status):
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
# If an exact match is not confirmed, this last case will be used if provided
case _:
return "Something's wrong with the internet"
Alors que le documentation officielle sont heureux de ne pas fournir switch
J'ai vu un solution à l'aide de 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,
}
Alors l'équivalent switch
est invoqué :
options[num]()
Cela commence à s'effondrer si vous dépendez fortement de l'automne.
@MortezaLSC, vous n'avez pas besoin des guillemets si vous faites correspondre des entiers à des fonctions.
Le remplacement direct est if
/ elif
/ else
.
Cependant, dans de nombreux cas, il existe de meilleures façons de le faire en Python. Voir " Remplacement de l'instruction switch en Python ? ".
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
28 votes
Depuis la version 3.10 de Python, vous pouvez utiliser la fonction
match ... case
la syntaxe : PEP 636 .22 votes
Python 3.10.0 fournit un équivalent syntaxique officiel, ce qui fait que les réponses soumises ne sont plus les solutions optimales ! Sur ce poste SO J'essaie de couvrir tout ce que vous pourriez vouloir savoir sur la
match
-case
construire, y compris pièges communs si vous venez d'autres langues. Bien sûr, si vous n'utilisez pas encore Python 3.10.0, les réponses existantes s'appliquent et sont toujours valables pour 2021.1 votes
J'aurais bien écrit ceci dans une réponse à ce post, mais malheureusement, il ne permet pas d'autres réponses. Mais avec plus d'un million de vues, je pense que cette question doit au moins être redirigée vers une réponse plus moderne - surtout lorsque la version 3.10.0 sera stable et que les débutants en Python tomberont sur cet article.