Python предлагает вам возможность делать некоторые вещи, которые вы могли бы сделать с goto, используя функции первого класса. Например:
void somefunc(int a)
{
if (a == 1)
goto label1;
if (a == 2)
goto label2;
label1:
...
label2:
...
}
Может быть сделано в python так:
def func1():
...
def func2():
...
funcmap = {1 : func1, 2 : func2}
def somefunc(a):
funcmap[a]() #Ugly! But it works.
Конечно, это не лучший способ заменить goto. Но, не зная точно, что вы пытаетесь сделать с помощью goto, сложно дать конкретный совет.
@ ascobol
Лучше всего заключить ее в функцию или использовать исключение. Для функции:
def loopfunc():
while 1:
while 1:
if condition:
return
За исключением:
try:
while 1:
while 1:
raise BreakoutException #Not a real exception, invent your own
except BreakoutException:
pass
Использование исключений для подобных вещей может показаться немного неловким, если вы пришли из другого языка программирования. Но я бы сказал, что если вам не нравится использовать исключения, Python не для вас. : -)