一尘不染

Python中是否有标签/定位器?

python

gotoPython中是否有一个或任何等效版本能够跳转到特定的代码行?


阅读 510

收藏
2020-02-21

共1个答案

一尘不染

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不是你想要的语言。

2020-02-21