python中,exit,return,sys.exit()等的区别与使用方法
来源:互联网 发布:续资治通鉴知乎 编辑:程序博客网 时间:2024/06/07 13:25
有这样一道题目: 字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来帮你.
我最初的代码是:
#!/usr/bin/env pythonimport stringimport keywordimport sys#Get all keyword for python#keyword.kwlist#['and', 'as', 'assert', 'break', ...]keyWords = keyword.kwlist#Get all character for identifier#string.letters ==> 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'#string.digits ==> '0123456789'charForId = string.letters + "_"numForId = string.digitsidInput = raw_input("Input your words,please!")if idInput in keyWords: print "%s is keyword fot Python!" % idInputelse: lenNum = len(idInput) if(1 == lenNum): if(idInput in charForId and idInput != "_"): print "%s is legal identifier for Python!" % idInput else: #It's just "_" print "%s isn't legal identifier for Python!" % idInput else: if(idInput[0:1] in charForId): legalstring = charForId + numForId for item in idInput[1:]: if (item not in legalstring): print "%s isn't legal identifier for Python!" % idInput sys.exit(0) print "%s is legal identifier for Python!2" % idInput else: print "%s isn't legal identifier for Python!3" % idInput
代码完毕后,我测试每一条分支,测试到分支时,必须输入_d4%等包含非法字符的标识符才能进行测试,我最初以为,sys.exit(0)---正常退出脚本,sys.exit(1)非正常退出脚本,但是实际情况是/9sys.exit(1),仅输出返回码不同):
if (item not in legalstring): print "%s isn't legal identifier for Python!" % idInput sys.exit(0)
Input your words,please!_d4%_d4% isn't legal identifier for Python!Traceback (most recent call last): File "E:/python/idcheck.py", line 37, in <module> sys.exit(0)SystemExit: 0>>>
由此可见,这样做没有达到我预期如下输出的效果,那么,问题在哪里呢?在于sys.exit()始终会抛出一个SystemExit异常。
Input your words,please!_d4%_d4% isn't legal identifier for Python!
#!/usr/bin/env pythonimport stringimport keywordimport sysimport tracebacktry: #Get all keyword for python #keyword.kwlist #['and', 'as', 'assert', 'break', ...] keyWords = keyword.kwlist #Get all character for identifier #string.letters ==> 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' #string.digits ==> '0123456789' charForId = string.letters + "_" numForId = string.digits idInput = raw_input("Input your words,please!") if idInput in keyWords: print "%s is keyword fot Python!" % idInput else: lenNum = len(idInput) if(1 == lenNum): if(idInput in charForId and idInput != "_"): print "%s is legal identifier for Python!" % idInput else: #It's just "_" print "%s isn't legal identifier for Python!" % idInput else: if(idInput[0:1] in charForId): legalstring = charForId + numForId for item in idInput[1:]: if (item not in legalstring): print "%s isn't legal identifier for Python!" % idInput sys.exit() print "%s is legal identifier for Python!2" % idInput else: print "%s isn't legal identifier for Python!3" % idInputexcept SystemExit: passexcept: traceback.print_exc()
上面的代码获取sys.exit()抛出的SystemExit异常。
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
exit:下面的代码中,如果把sys.exit()替换成exit,则exit仅仅跳出离它最近的for循环, print "%s is legal identifier for Python!2" % idInput语句会被输出,这里,exit的作用类似于break. 但实际上break和exit作用并不同
for item in idInput[1:]: if (item not in legalstring): print "%s isn't legal identifier for Python!" % idInput sys.exit() print "%s is legal identifier for Python!2" % idInput
- python中,exit,return,sys.exit()等的区别与使用方法
- python 的exit,return,sys.exit()等的区别与使用方法
- python 中 os._exit(), sys.exit(), exit() 的区别是什么?
- c 中 exit 与 return 的区别
- linux 中 return 与exit的区别
- python sys.exit()、break、 exit()、quit()、os._exit()、return的区别
- python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
- python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
- exit 与 return 的区别
- return与exit的区别
- exit与return的区别
- exit 与 return 的区别!
- exit与return的区别
- exit 与return 的区别
- exit 与 return 的区别
- return与exit的区别
- exit与return的区别
- exit与return的区别
- js 判断数组以及数字
- Linux TCP 连接数修改
- 编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存)
- 如何用QTP采用关键字驱动测试框架来完成TechExcel DevTest产品的回归测试
- DES加密模式详解(二)
- python中,exit,return,sys.exit()等的区别与使用方法
- spring 与hibernate如何配置
- 使用ViewGroup自定义数字键盘
- vc按钮按下后变灰(不能再按)
- Java Annotation入门
- string and byte[] converter
- Mastering Regular Expression 代码介绍 1 - 重复单词处理
- Cadence IC5141 安装
- [热身赛][hdoj_2003]求绝对值