Python vous offre la possibilité de faire certaines des choses que vous pourriez faire avec un goto en utilisant des fonctions de première classe. Par exemple :
void somefunc(int a)
{
if (a == 1)
goto label1;
if (a == 2)
goto label2;
label1:
...
label2:
...
}
Cela pourrait être fait en python comme ceci :
def func1():
...
def func2():
...
funcmap = {1 : func1, 2 : func2}
def somefunc(a):
funcmap[a]() #Ugly! But it works.
D'accord, ce n'est pas la meilleure façon de remplacer goto. Mais sans savoir exactement ce que vous essayez de faire avec le goto, il est difficile de donner des conseils spécifiques.
@ ascobol :
Votre meilleure chance est de l'enfermer dans une fonction ou d'utiliser une exception. Pour la fonction :
def loopfunc():
while 1:
while 1:
if condition:
return
Pour l'exception :
try:
while 1:
while 1:
raise BreakoutException #Not a real exception, invent your own
except BreakoutException:
pass
L'utilisation d'exceptions pour faire ce genre de choses peut sembler un peu étrange si vous venez d'un autre langage de programmation. Mais je dirais que si vous n'aimez pas utiliser les exceptions, Python n'est pas le langage qu'il vous faut :-)
3 votes
L'étiquette est assez vague. Pouvez-vous être plus précis sur ce que vous recherchez ?
16 votes
import goto
25 votes
Un de mes amis a mis en place
goto
en Python alors qu'il traduisait du code Fortran en Python. Il s'est détesté pour ça.6 votes
github.com/cdjc/goto (c'est beaucoup plus rapide que l'implémentation entrienne)
0 votes
"L'étiquette est plutôt vague", aucune étiquette n'est intelligente, la structure fonctionne comme une machine.
2 votes
Dans le contexte de l'étiquette "goto" est très clair pour tout programmeur expérimenté