为了账号安全,请及时绑定邮箱和手机立即绑定

请问我该如何在python中实现goto功能?

请问我该如何在python中实现goto功能?

慕尼黑5688855 2021-09-21 14:10:53
假如:#50# S3=...........(一个赋值行为)#60# for............(这里有个三重循环)##三重循环结束##if ((L-1)==0):L=0goto 60··else:if (S3>S2):goto 50我要实现goto的功能,请问在不安装第三方库的前提下如何实现?
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

一、具体用法

首先安装一个 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


扩展资料:

Goto语句与结构化程序设计

goto语句问题的提出直接推动了结构化程序设计(structuredprogramming)的思想和程序设计方法学的诞生和发展。结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。

结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。

1.自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

2.逐步求精:对复杂问题,应设计一些子目标作为过渡,逐步细化。

3.模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

4.限制使用goto语句

结构化程序设计方法的起源来自对goto语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用goto语句,使用goto语句会使程序执行效率较高;在合成程序目标时,goto语句往往是有用的,如返回语句用goto。

否定的结论是,goto语句是有害的,是造成程序混乱的祸根,程序的质量与goto语句的数量成反比,应该在所有高级程序设计语言中取消goto语句。取消goto语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:

(1)goto语句确实有害,应当尽量避免;

(2)完全避免使用goto语句也并非是个明智的方法,有些地方使用goto语句,会使程序流程更清楚、效率更高。

(3)争论的焦点不应该放在是否取消goto语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用goto语句



查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 275 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信