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


Posted in Python onMay 28, 2015

有这样一道题目:  字符串标识符.修改例 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
Python 相关文章推荐
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
python游戏地图最短路径求解
Jan 16 Python
python字符串循环左移
Mar 08 Python
Python中format()格式输出全解
Apr 12 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
浅谈python3中input输入的使用
Aug 02 Python
python 中xpath爬虫实例详解
Aug 26 Python
使用python+whoosh实现全文检索
Dec 09 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
python如何安装下载后的模块
Jul 03 Python
浅谈Python数学建模之整数规划
Jun 23 Python
Python中的with...as用法介绍
May 28 #Python
python关键字and和or用法实例
May 28 #Python
Python yield 使用浅析
May 28 #Python
Python中super的用法实例
May 28 #Python
Python中的super用法详解
May 28 #Python
Python读写ini文件的方法
May 28 #Python
Python实现给文件添加内容及得到文件信息的方法
May 28 #Python
You might like
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
党校自我鉴定范文
2013/10/02 职场文书
自我评价范文分享
2014/01/04 职场文书
银行委托书范本
2014/04/04 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
护士求职信
2014/07/05 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
flex弹性布局详解
2022/03/20 HTML / CSS
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python