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 <module>
    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
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: sysPython内置的一个模块,提供了对Python解释器的访问和控制。在sys模块定义了许多与Python解释器紧密相关的函数和变量。sys.exit()是sys模块的一个函数,用于退出当前程序,并返回一个状态码给操作系统,状态码默认为0,表示正常退出。在sys.exit()函数,传递1作为参数表示程序异常终止,返回给操作系统的状态码为1。 ### 回答2: sysPython标准库的一个模块,全称为system。它提供了访问与Python解释器相关的变量和函数的功能。sys模块是Python程序常用的模块之一。使用sys模块可以访问与Python解释器和系统相关的变量和函数。 在sys模块exit()是一个用于退出Python解释器的函数。当我们在Python代码使用sys.exit(1)时,表示程序以非零的状态退出,并且终止程序的运行。通常,0表示程序正常退出,而非零状态码则表示程序出现了异常或错误。 使用sys.exit()函数可以在程序任意位置终止程序的运行,并返回指定的状态码。这在需要在程序检测到某些条件时,立即终止程序并返回相应的错误码时非常有用。它可以用于处理异常、错误、故障等情况,帮助我们更好地进行程序控制和错误处理。 需要注意的是,sys.exit()函数会引发SystemExit异常,因此若没有适当地进行异常处理,程序在此处会被终止执行。而且,在大部分情况下,直接使用return语句来退出程序更加合适,sys.exit()函数多用于在主程序的特殊情况下使用。 ### 回答3: sysPython标准库的一个模块,它提供了对解释器相关的变量和函数的访问。在这个模块sys.exit()函数用于退出当前的Python解释器。 sys模块包含了一些与Python解释器和运行时环境相关的功能。它提供了对解释器的一些控制和访问,例如命令行参数、标准输入输出、标准错误等。sys.exit()函数是sys模块的一个函数,用于终止当前正在运行的程序。 当我们在程序调用了sys.exit(1)时,程序会立即终止并返回退出码1给操作系统。一般来说,退出码为0表示程序正常退出,而非零的退出码则表示程序异常退出或发生错误。在这里,我们传递的退出码为1,通常表示程序异常退出。终止程序的同时,也会关闭所有的文件和清理相关资源。 总之,sysPython的标准库模块,提供了对解释器和运行时环境的访问。sys.exit(1)是sys模块的函数,用于终止当前的Python程序,并返回一个退出码给操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值