python中,exit,return,sys.exit()等的区别与使用方法
2012-07-31 23:52
519 查看
有这样一道题目:字符串标识符.修改例6-1的idcheck.py脚本,使之可以检测长度为一的标识符,并且可以识别Python关键字,对后一个要求,你可以使用keyword模块(特别是keyword.kelist)来帮你.
我最初的代码是:
代码完毕后,我测试每一条分支,测试到分支时,必须输入_d4%等包含非法字符的标识符才能进行测试,我最初以为,sys.exit(0)---正常退出脚本,sys.exit(1)非正常退出脚本,但是实际情况是/9sys.exit(1),仅输出返回码不同):
由此可见,这样做没有达到我预期如下输出的效果,那么,问题在哪里呢?在于sys.exit()始终会抛出一个SystemExit异常。
上面的代码获取sys.exit()抛出的SystemExit异常。
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
exit:下面的代码中,如果把sys.exit()替换成exit,则exit仅仅跳出离它最近的for循环,print"%sislegalidentifierforPython!2"%idInput语句会被输出,这里,exit的作用类似于break.但实际上break和exit作用并不同
我最初的代码是:
#!/usr/bin/envpython importstring importkeyword importsys #Getallkeywordforpython #keyword.kwlist #['and','as','assert','break',...] keyWords=keyword.kwlist #Getallcharacterforidentifier #string.letters==>'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' #string.digits==>'0123456789' charForId=string.letters+"_" numForId=string.digits idInput=raw_input("Inputyourwords,please!") ifidInputinkeyWords: print"%siskeywordfotPython!"%idInput else: lenNum=len(idInput) if(1==lenNum): if(idInputincharForIdandidInput!="_"): print"%sislegalidentifierforPython!"%idInput else: #It'sjust"_" print"%sisn'tlegalidentifierforPython!"%idInput else: if(idInput[0:1]incharForId): legalstring=charForId+numForId foriteminidInput[1:]: if(itemnotinlegalstring): print"%sisn'tlegalidentifierforPython!"%idInput sys.exit(0) print"%sislegalidentifierforPython!2"%idInput else: print"%sisn'tlegalidentifierforPython!3"%idInput
代码完毕后,我测试每一条分支,测试到分支时,必须输入_d4%等包含非法字符的标识符才能进行测试,我最初以为,sys.exit(0)---正常退出脚本,sys.exit(1)非正常退出脚本,但是实际情况是/9sys.exit(1),仅输出返回码不同):
if(itemnotinlegalstring): print"%sisn'tlegalidentifierforPython!"%idInput sys.exit(0)
Inputyourwords,please!_d4% _d4%isn'tlegalidentifierforPython! Traceback(mostrecentcalllast): File"E:/python/idcheck.py",line37,in<module> sys.exit(0) SystemExit:0 >>>
由此可见,这样做没有达到我预期如下输出的效果,那么,问题在哪里呢?在于sys.exit()始终会抛出一个SystemExit异常。
Inputyourwords,please!_d4% _d4%isn'tlegalidentifierforPython!
#!/usr/bin/envpython importstring importkeyword importsys importtraceback try: #Getallkeywordforpython #keyword.kwlist #['and','as','assert','break',...] keyWords=keyword.kwlist #Getallcharacterforidentifier #string.letters==>'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' #string.digits==>'0123456789' charForId=string.letters+"_" numForId=string.digits idInput=raw_input("Inputyourwords,please!") ifidInputinkeyWords: print"%siskeywordfotPython!"%idInput else: lenNum=len(idInput) if(1==lenNum): if(idInputincharForIdandidInput!="_"): print"%sislegalidentifierforPython!"%idInput else: #It'sjust"_" print"%sisn'tlegalidentifierforPython!"%idInput else: if(idInput[0:1]incharForId): legalstring=charForId+numForId foriteminidInput[1:]: if(itemnotinlegalstring): print"%sisn'tlegalidentifierforPython!"%idInput sys.exit() print"%sislegalidentifierforPython!2"%idInput else: print"%sisn'tlegalidentifierforPython!3"%idInput exceptSystemExit: pass except: traceback.print_exc()
上面的代码获取sys.exit()抛出的SystemExit异常。
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
exit:下面的代码中,如果把sys.exit()替换成exit,则exit仅仅跳出离它最近的for循环,print"%sislegalidentifierforPython!2"%idInput语句会被输出,这里,exit的作用类似于break.但实际上break和exit作用并不同
foriteminidInput[1:]:
if(itemnotinlegalstring):
print"%sisn'tlegalidentifierforPython!"%idInput
sys.exit()
print"%sislegalidentifierforPython!2"%idInput
相关文章推荐
- python 的exit,return,sys.exit()等的区别与使用方法
- Python中exit、return、sys.exit()等使用实例和区别
- Python中exit、return、sys.exit()等使用实例和区别
- python sys.exit()、break、 exit()、quit()、os._exit()、return的区别
- python中类方法、类实例方法、静态方法的使用与区别
- c语言exit和return区别,在fork和vfork中使用(转的,觉得对我有帮助)
- Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用
- python中的for else与if else的区别和使用方法
- python学习笔记4:多进程和多线程的使用方法和区别
- python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
- Python os._exit() sys.exit() exit()区别
- Python os._exit() sys.exit() exit()区别
- python之 sys.exit() os._exit() exit() quit()的简单使用
- python socket编程入门(编写server实例)+send 与sendall的区别与使用方法
- c语言exit和return区别,在fork和vfork中使用
- python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
- Python中列表和元组的使用方法和区别详解
- c语言exit和return区别,在fork和vfork中使用
- python中使用sys模板和logging模块获取行号和函数名的方法
- python中使用sys模板和logging模块获取行号和函数名的方法