欢迎来到山村网

Python中exit、return、sys.exit()等使用实例和区别

2019-03-02 13:33:20浏览:321 来源:山村网   
核心摘要:  这篇文章主要介绍了Python中exit、return、sys.exit()等使用实例和区别,本文是一个实际项目中的总结,需要的朋友可以参考下 

  这篇文章主要介绍了Python中exit、return、sys.exit()等使用实例和区别,本文是一个实际项目中的总结,需要的朋友可以参考下

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

  我最初的代码是:

  代码如下:

  #!/usr/bin/env python

  import string

  import keyword

  import 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.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(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

  sys.exit(0)

  SystemExit: 0

  >>>

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

  代码如下:

  Input your words,please!_d4%

  _d4% isn't legal identifier for Python!

   代码如下:

  #!/usr/bin/env python

  import string

  import keyword

  import sys

  import traceback

  try:

  #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" % idInput

  except SystemExit:

  pass

  except:

  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 sys.argv用法实例

上一篇:

Python中的with...as用法介绍

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com