本节内容:
其他相关
一、isinstance(obj, cls)
检查是否obj是否是类 cls 的对象
注:isinstance(obj, cls) 检查obj是否是cls类(包括父类)的实例对象
type(obj, cls) 检查obj是否是cls类(不包括父类)的实例对象
|
1
2
3
4
5
6
|
class Foo(object):
pass
obj = Foo()
isinstance(obj, Foo)
|
二、issubclass(sub, super)
检查sub类是否是 super 类的派生类
|
1
2
3
4
5
6
7
|
class Foo(object):
pass
class Bar(Foo):
pass
issubclass(Bar, Foo)
|
三、异常处理
1、异常基础
在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!
|
1
2
3
4
|
try:
pass
except Exception as e:
pass
|
1 # try: 2 # pass 3 # except (ValueError,IndexError): 4 # print('针对性的处理') 5 # except Exception as e: 6 # print(e) 7 # print('通用性的处理') 8 # else: # 当try中的代码不发生异常的时候 走else分支 9 # print('else') 10 # finally: # 无论如何都会被执行 11 # print('finally') 12 13 # def func(): 14 # f = open('file') 15 # try: 16 # while True: 17 # for line in f: 18 # if line.startswith('a'): 19 # return line 20 # except: 21 # print('异常处理') 22 # finally: # 即使return也会先执行fianlly中的代码 23 # f.close() 24 25 # try: 26 # f = open('www','w') 27 # f.read() 28 # finally: # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序 29 # f.close() 30 # print('文件已经关闭了') 31 32 # finally用来回收一些操作系统的资源 : 数据库连接 打开的文件句柄 网络连接 33 34 # 异常处理的几种情况 35 # try ... except 36 # try ... except ... else 37 # try ... finally 38 # try ... except ... finally 39 # try ... except ... else ... finally 40 41 # 异常处理的忠告,在最外层的异常处理应该在所有的开发结束之后才放
需求:将用户输入的两个数字相加
1 while True: 2 num1 = raw_input('num1:') 3 num2 = raw_input('num2:') 4 try: 5 num1 = int(num1) 6 num2 = int(num2) 7 result = num1 + num2 8 except Exception as e: 9 print('出现异常,信息如下:') 10 print(e)
2、异常种类
python中的异常种类非常多,每个异常专门用于处理某一项异常!!!
1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x 2 IOError 输入/输出异常;基本上是无法打开文件 3 ImportError 无法引入模块或包;基本上是路径问题或名称错误 4 IndentationError 语法错误(的子类) ;代码没有正确对齐 5 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] 6 KeyError 试图访问字典里不存在的键 7 KeyboardInterrupt Ctrl+C被按下 8 NameError 使用一个还未被赋予对象的变量 9 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) 10 TypeError 传入对象类型与要求的不符合 11 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量, 12 导致你以为正在访问它 13 ValueError 传入一个调用者不期望的值,即使值的类型是正确的