Bien que python ne possède pas d'instructions switch, vous pouvez les émuler avec des dictionnaires. Par exemple, si vous vouliez un commutateur comme celui-ci:
switch (a):
case 1:
runThisCode()
break
case 2:
runThisOtherCode()
break
case 3:
runThisOtherOtherCode()
break
Vous pouvez utiliser des if
déclarations, ou ceci:
exec{1:"runThisCode()",2:"runThisOtherCode()",3:"runThisOtherOtherCode()"}[a]
ou ca:
{1:runThisCode,2:runThisOtherCode,3:runThisOtherOtherCode}[a]()
ce qui est mieux si tous les chemins de code sont des fonctions avec les mêmes paramètres.
Pour prendre en charge une valeur par défaut, procédez comme suit:
exec{1:"runThisCode()"}.get(a,"defaultCode()")
(ou ca:)
{1:runThisCode}.get(a,defaultCode)()
Un autre avantage est que si vous avez des redondances, vous pouvez simplement les ajouter après la fin du dictionnaire:
exec{'key1':'code','key2':'code'}[key]+';codeThatWillAlwaysExecute'
Et si vous vouliez simplement utiliser un commutateur pour renvoyer une valeur:
def getValue(key):
if key=='blah':return 1
if key=='foo':return 2
if key=='bar':return 3
return 4
Vous pouvez simplement faire ceci:
getValue=lambda key:{'blah':1,'foo':2,'bar',3}.get(key,4)