首页 > 代码库 > python goto 包
python goto 包
http://entrian.com/goto/
# Example 1: Breaking out from a deeply nested loop:from goto import goto, labelfor i in range(1, 10): for j in range(1, 20): for k in range(1, 30): print i, j, k if k == 3: goto .endlabel .endprint "Finished\n"# Example 2: Restarting a loop:from goto import goto, labellabel .startfor i in range(1, 4): print i if i == 2: try: output = message except NameError: print "Oops - forgot to define ‘message‘! Start again." message = "Hello world" goto .startprint output, "\n"# Example 3: Cleaning up after something fails:from goto import goto, label# Imagine that these are real worker functions.def setUp(): print "setUp"def doFirstTask(): print 1; return Truedef doSecondTask(): print 2; return Truedef doThirdTask(): print 3; return False # This one pretends to fail.def doFourthTask(): print 4; return Truedef cleanUp(): print "cleanUp"# This prints "setUp, 1, 2, 3, cleanUp" - no "4" because doThirdTask fails.def bigFunction1(): setUp() if not doFirstTask(): goto .cleanup if not doSecondTask(): goto .cleanup if not doThirdTask(): goto .cleanup if not doFourthTask(): goto .cleanup label .cleanup cleanUp()bigFunction1()print "bigFunction1 done\n"# Example 4: Using comefrom to let the cleanup code take control itself.from goto import comefrom, labeldef bigFunction2(): setUp() if not doFirstTask(): label .failed if not doSecondTask(): label .failed if not doThirdTask(): label .failed if not doFourthTask(): label .failed comefrom .failed cleanUp()bigFunction2()print "bigFunction2 done\n"# Example 5: Using a computed goto:from goto import goto, labellabel .getinputi = raw_input("Enter either ‘a‘, ‘b‘ or ‘c‘, or any other letter to quit: ")if i in (‘a‘, ‘b‘, ‘c‘): goto *ielse: goto .quitlabel .aprint "You typed ‘a‘"goto .getinputlabel .bprint "You typed ‘b‘"goto .getinputlabel .cprint "You typed ‘c‘"goto .getinputlabel .quitprint "Finished\n"# Example 6: What happens when a label is missing:from goto import goto, labellabel .realgoto .unreal # Raises a MissingLabelError exception.
python goto 包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。