Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
本文总结了Python3.4中类型判断、异常处理及程序终止操作的常用方法。通过具体代码示例,详细解析了`os._exit()`与`sys.exit()`的区别、`try-except`异常捕获机制,以及利用`traceback`和`sys`模块进行错误追踪的技巧。
Python程序终止方式
在Python中,退出程序主要有两种方式:`os._exit()`和`sys.exit()`。理解它们的区别对于编写健壮的程序至关重要。
os._exit()与sys.exit()的区别
- os._exit():直接退出Python程序,调用C语言的`_exit()`函数。它不会执行清理操作(如`finally`块),通常用于线程中退出。
- sys.exit():引发`SystemExit`异常。如果该异常未被捕获,程序将正常退出;如果被捕获,可以执行额外的清理工作。它通常用于主线程中退出。
参数方面,`sys.exit(0)`表示正常退出,而`sys.exit(1-127)`表示不正常退出。非0退出参数可以抛出异常事件供捕获。
import os
os._exit(0)类型判断
在Python中,可以使用`type()`函数或`isinstance()`函数进行类型判断。`type()`返回对象的类型,而`isinstance()`返回布尔值,表示对象是否属于指定的类型。
import random
import sys
import os
secret = random.randint(1,10)
temp = input("请输入一个数字\n")
#print(type(temp))#<class 'str'> 类型判断
#print(isinstance(temp,int))#False异常处理
Python使用`try-except-finally`结构进行异常处理,没有`catch`函数。以下介绍几种常见的异常处理方法。
捕获所有异常
使用`except:`可以捕获所有异常。在示例中,如果用户输入的不是数字,程序将打印错误信息并终止。
try:
guess = int(temp)
except:
print("输入的不是数字,程序终止了")#注释内容不能在逻辑代码块里独立一行进行
os._exit(0)#os._exit() 用于在线程中退出,sys.exit()用于在主线程中退出,exit(0)#终止退出程序,会关闭窗口使用traceback模块查看异常
引入`traceback`模块,可以使用`traceback.print_exc()`打印异常信息。
#引入python中的traceback模块,跟踪错误
import traceback
try:
a=b
b=c
except:
traceback.print_exc()使用sys模块回溯最后异常
引入`sys`模块,可以使用`sys.exc_info()`获取异常信息。
#引入sys模块
import sys
try:
a=b
b=c
except:
info=sys.exc_info()
print info[0],":",info[1]将异常信息保存至文本文件
可以将`traceback.print_exc()`的信息保存至文本文件,方便后续分析。
import traceback
try:
a=b
b=c
except:
f=open("c:log.txt",'a')
traceback.print_exc(file=f)
f.flush()
f.close()断言assert
断言`assert`关键字用于在程序中植入检查点。如果条件为假,程序将自动崩溃并抛出`AssertionError`异常。
import traceback
#断言assert关键字,程序自动崩溃并抛出AssertionError异常,用在重新中植入检查点
assert 4 > 3 #条件正确自动忽略跳过
print("pass...")
try:
assert 3 > 4
except (AssertionError):
traceback.print_exc()
print("after assert...")完整示例代码
以下是一个完整的示例代码,展示了类型判断、异常处理及程序终止的综合应用。
#idle中按F5可以运行代码
#引入外部模块 import xxx
#random模块,randint(开始数,结束数) 产生整数随机数
import random
import sys
import os
secret = random.randint(1,10)
temp = input("请输入一个数字\n")
#print(type(temp))#<class 'str'> 类型判断
#print(isinstance(temp,int))#False
#异常处理 try except finally 没有catch函数
try:
guess = int(temp)
except:
print("输入的不是数字,程序终止了")#注释内容不能在逻辑代码块里独立一行进行
os._exit(0)#os._exit() 用于在线程中退出,sys.exit()用于在主线程中退出,exit(0)#终止退出程序,会关闭窗口
count = 0;
while guess != secret: #猜错的时候才进入循环条件
if count == 0 and guess > secret:
print("猜大了")
if count == 0 and guess < secret:
print("猜小了")
temp = input("请重新输入数字\n") #需要在判断之前让用户输入,否则猜对了就直接退出了
try:
guess = int(temp)
except (ZeroDivisionError,Exception):
print("输入的不是数字,请重新输入")
print(ZeroDivisionError,":",Exception)
count += 1 #不能使用count++这种方式
if count > 2:
print("猜错4次自动退出了")
break #退出循环
if guess == secret:
print("恭喜,你猜对了")
print("猜对了也就那样")
else:
if guess > secret:
print("猜大了")
else:
print("猜小了")
print("游戏结束")以上就是Python3.4学习笔记之类型判断,异常处理,终止程序操作的详细内容,更多关于Python3.4的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









