欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

python中exit(0)和exit(1)的用法和区别,谢谢了

shiping1 的头像
exit(0):无错误退出
exit(1):有错误退出
退出代码是告诉解释器的(或操作系统)
exit()  倒底是什么意思呢

来自 http://zhidao.baidu.com/link?url=ob56lg5ARwSrLd0hYVDhX4LdQJEES37iWCKJVt3BvAggIjiM3dQTLoG2P09_kAOS3vX7lfLTWdcESBtWtdP9I_


python中,exit,return,sys.exit()等的区别与使用方法

 24697人阅读 评论(1) 收藏 举报

    有这样一道题目:  字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来帮你.

   我最初的代码是:

    

  1. #!/usr/bin/env python  
  2.   
  3. import string  
  4. import keyword  
  5. import sys  
  6.   
  7. #Get all keyword for python  
  8. #keyword.kwlist  
  9. #['and', 'as', 'assert', 'break', ...]  
  10. keyWords = keyword.kwlist  
  11.   
  12. #Get all character for identifier  
  13. #string.letters ==> 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'  
  14. #string.digits  ==> '0123456789'  
  15. charForId = string.letters + "_"  
  16. numForId = string.digits  
  17.   
  18. idInput = raw_input("Input your words,please!")  
  19.   
  20. if idInput in keyWords:  
  21.     print "%s is keyword fot Python!" % idInput  
  22. else:  
  23.     lenNum = len(idInput)  
  24.     if(1 == lenNum):  
  25.         if(idInput in charForId and idInput != "_"):  
  26.             print "%s is legal identifier for Python!" % idInput  
  27.         else:  
  28.             #It's just "_"  
  29.             print "%s isn't legal identifier for Python!" % idInput  
  30.   
  31.     else:  
  32.         if(idInput[0:1] in charForId):  
  33.             legalstring = charForId + numForId  
  34.             for item in idInput[1:]:  
  35.                 if (item not in legalstring):  
  36.                     print "%s isn't legal identifier for Python!" % idInput  
  37.                     sys.exit(0)  
  38.             print "%s is legal identifier for Python!2" % idInput  
  39.         else:  
  40.             print "%s isn't legal identifier for Python!3" % idInput  
  41.                       
  42.   
  43.               
  44.           
  45.           
  46.           
  47.           

    代码完毕后,我测试每一条分支,测试到分支时,必须输入_d4%等包含非法字符的标识符才能进行测试,我最初以为,sys.exit(0)---正常退出脚本,sys.exit(1)非正常退出脚本,但是实际情况是/9sys.exit(1),仅输出返回码不同): 

    

  1. if (item not in legalstring):  
  2.     print "%s isn't legal identifier for Python!" % idInput  
  3.    sys.exit(0)  
  1. Input your words,please!_d4%  
  2. _d4% isn't legal identifier for Python!  
  3.   
  4. Traceback (most recent call last):  
  5.   File "E:/python/idcheck.py", line 37, in <module>  
  6.     sys.exit(0)  
  7. SystemExit: 0  
  8. >>>   

    由此可见,这样做没有达到我预期如下输出的效果,那么,问题在哪里呢?在于sys.exit()始终会抛出一个SystemExit异常。

  1. Input your words,please!_d4%  
  2. _d4% isn't legal identifier for Python!  

 

  1. #!/usr/bin/env python  
  2.   
  3. import string  
  4. import keyword  
  5. import sys  
  6. import traceback  
  7.   
  8. try:  
  9.     #Get all keyword for python  
  10.     #keyword.kwlist  
  11.     #['and', 'as', 'assert', 'break', ...]  
  12.     keyWords = keyword.kwlist  
  13.   
  14.     #Get all character for identifier  
  15.     #string.letters ==> 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'  
  16.     #string.digits  ==> '0123456789'  
  17.     charForId = string.letters + "_"  
  18.     numForId = string.digits  
  19.   
  20.     idInput = raw_input("Input your words,please!")  
  21.   
  22.     if idInput in keyWords:  
  23.         print "%s is keyword fot Python!" % idInput  
  24.     else:  
  25.         lenNum = len(idInput)  
  26.         if(1 == lenNum):  
  27.             if(idInput in charForId and idInput != "_"):  
  28.                 print "%s is legal identifier for Python!" % idInput  
  29.             else:  
  30.                 #It's just "_"  
  31.                 print "%s isn't legal identifier for Python!" % idInput  
  32.   
  33.         else:  
  34.             if(idInput[0:1] in charForId):  
  35.                 legalstring = charForId + numForId  
  36.                 for item in idInput[1:]:  
  37.                     if (item not in legalstring):  
  38.                         print "%s isn't legal identifier for Python!" % idInput  
  39.                         sys.exit()  
  40.                 print "%s is legal identifier for Python!2" % idInput  
  41.             else:  
  42.                 print "%s isn't legal identifier for Python!3" % idInput  
  43.   
  44. except SystemExit:  
  45.     pass  
  46. except:  
  47.     traceback.print_exc()  
  1.    

上面的代码获取sys.exit()抛出的SystemExit异常。

return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。

exit:下面的代码中,如果把sys.exit()替换成exit,则exit仅仅跳出离它最近的for循环, print "%s is legal identifier for Python!2" % idInput语句会被输出,这里,exit的作用类似于break. 但实际上break和exit作用并不同

  1.   
  1. for item in idInput[1:]:  
  2.     if (item not in legalstring):  
  3.         print "%s isn't legal identifier for Python!" % idInput  
  4.         sys.exit() 
来自  http://blog.csdn.net/sruru/article/details/7815495
普通分类: