Python3中goto 语句的使用及原

发布时间:2019-08-23 07:58:37编辑:auto阅读(1353)

    【时间】2018.11.03

    【题目】Python3中goto 语句的使用及原理解析

    概述

    本文转载自https://blog.csdn.net/yilovexing/article/details/81092388,在此基础上增加了原理的一点说明。    

    熟悉 C 语言的小伙伴一定对 goto 语句不陌生,它可以在代码之间随意的跳来跳去,但是好多老鸟都告诫大家,不要使用 goto,因为 goto 会使你的代码逻辑变的极其混乱。但是有时候我们不得不用它,因为它太高效了。比如进入循环内部深层一个 goto 就能回到最上层,还有可以定位到代码的任意一个位置,很是高效方便。但是也不要所有的代码都用 goto,那样你的代码就变得像量子世界那样诡异,连你自己都控制不了。最后一句忠告,能不用 goto 最好就不用。

    一、具体用法

    首先安装一个 goto 的包(因为官方是没有 goto 语句的)

    pip install goto-statement

    具体的语法--注意: 对需要使用goto的函数,前面加个@patch

    from goto import with_goto
    
    @with_goto
    
    def range(start, stop):
    
        i = start
    
        result = []
    
        label .begin
    
        if i == stop:
    
            goto .end
    
        result.append(i)
    
        i += 1
    
        goto .begin
    
        label .end
    
        return result

    二、原理解析

    原理是这样:通过给所有函数修改trace,然后在异常时就会执行设置的函数

    sys.settrace(_trace)
    frame = sys._getframe().f_back
    while frame:
        frame.f_trace = _trace
        frame = frame.f_back


    github goto pack:https://github.com/snoack/python-goto

     

关键字