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

发布于 2021-02-02 23:13:41

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

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看