目录:
1.python的异常类型及处理
2.Python中的异常
3.python常见典型异常
4.python异常的种类
5.Python异常类型
6.python 典型异常
7.Python的异常
8.异常值 python
9.python中异常的概念
1.python的异常类型及处理
一、Python标准的数据类型Python3中有六个标准的数据类型:1、Number(数字),2、String(字符串),3、List(列表),4、Tuple(元组),5、Sets(集合),6、Dictionary(字典)。
2.Python中的异常
1、Number(数字)Python3 支持 int、float、bool、complex(复数)type()与isinstance()比较:1、isinstance()会认为子类是一种父类类型;2、type()不会认为子类是一种父类类型。
3.python常见典型异常
a,b,c,d=123,123.456,True,21j # print(type(a),type
4.python异常的种类
(b),type(c),type(d)) a,b,c,d=123,123.456,True,21j # Trueprint(isinstance(a, int)) # Trueprint(isinstance(b,
5.Python异常类型
float)) # Trueprint(isinstance(c,bool)) # Trueprint(isinstance(d,complex)) # True True True Trueprint
6.python 典型异常
(isinstance(a,int),isinstance(b,float),isinstance(c,bool),isinstance(d,complex)) class A: id=1 class B(A): id=1
7.Python的异常
# Trueprint(isinstance(A(),A)) # Trueprint(type(A())==A) # Trueprint(isinstance(B(),A)) # Falseprint(
8.异常值 python
type(B())==A)2、String(字符串)Python中的字符串用单引号()或双引号(“)括起来,同时使用反斜杠(\)转义特殊字符str = what21print(str) 。
9.python中异常的概念
# 输出字符串print(str[0:-1]) # 输出第一个到倒数第二个的所有字符print(str[0]) # 输出字符串第一个字符print(str[2:5])
# 输出从第三个开始到第五个的字符print(str[2:]) # 输出从第三个开始的后的所有字符print(str * 2) # 输出字符串两次print(str + “.com”
) # 连接字符串 str = what21\tcomprint(str)3、List(列表)(1)、列表可以完成大多数集合类的数据结构实现列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
(2)、列表是写在方括号([])之间、用逗号分隔开的元素列表(3)、和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表list = [123, 456 , 7.89, what21
, “com”] list2 =[“www”,小奋斗] # [123, 456, 7.89, what21, com] print(list) # 123print(list[0]) # [123, 456
, 7.89] print(list[0:3]) # [456, 7.89, what21, com] print(list[1:]) # [123, 456, 7.89, what21, com, 123
, 456, 7.89, what21, com] print(list*2) # 输出两次列表 # [123, 456, 7.89, what21, com, www, 小奋斗] print
(list + list2)4、Tuple(元组)元组(tuple)与列表类似,不同之处在于元组的元素不能修改元组写在小括号(())里,元素之间用逗号隔开tuple = (123, 456 , 7.89。
, what21, “com”) tuple2 =[“www”,小奋斗] # (123, 456, 7.89, what21, com) print(tuple) # 123print(tuple[0]) # (
123, 456, 7.89) print(tuple[0:3]) # (456, 7.89, what21, com) print(tuple[1:]) # (123, 456, 7.89, what21
, com, 123, 456, 7.89, what21, com) print(tuple*2) # 输出两次列表5、Set(集合)(1)、集合(set)是一个无序不重复元素的序列(2)、基本功能是进行成员关系测试和删除重复元素。
(3)、可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典person={“zhangsan”,”lisi”。
,”wangwu”,”zhaoliu”} print(person); if(zhangsanin person): print(“zhangsan在集合中”) else: print(“zhangsan不在集合中”
) a = set(what21) b = set(“com”) print(a) print(b) print(a-b) # a和b的差集print(a|b) # a和b的并集print
(a&b) # a和b的交集print(a^b) # a和b中不同时存在的元素6、Dictionary(字典)(1)、列表是有序的对象结合,字典是无序的对象集合两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
(2)、字典是一种映射类型,字典用”{ }”标识,它是一个无序的键(key) : 值(value)对集合(3)、键(key)必须使用不可变类型(4)、在同一个字典中,键(key)必须是唯一的dict = {} dict[。
one] = “小奋斗” dict[2] = “www.what21.com” dict2 = {name: 小奋斗,code:1, site: www.what21.com} print (dict[
one]) # 输出键为 one 的值print (dict[2]) # 输出键为 2 的值print (dict2) # 输出完整的字典print
(dict2.keys()) # 输出所有键print (dict2.values()) # 输出所有值7、迭代器(1)、迭代器有两个基本的方法:iter() 和 next()(2)、字符串,列表或元组对象都可用于创建迭代器。
import sys str = what21 list = [123, 456 , 7.89, what21, “com”] tuple = (123, 456 , 7.89, what21, “com”
) person={“zhangsan”,”lisi”,”wangwu”,”zhaoliu”} 迭代1 it = iter(str) for x in it: print (x, end=” | “
) print() “””迭代2″”” it2=iter(tuple); for a in it2: print(a,end=” , “); print() # 迭代3 # itr = iter(list);
whileTrue: try: print(next(itr), end=” | “) except StopIteration: sys.exit()8、数据类型转换(1)、int(x [,base]),将x转换为一个整数。
(2)、float(x),将x转换到一个浮点数(3)、complex(real [,imag]),创建一个复数(4)、str(x),将对象 x 转换为字符串(5)、repr(x),将对象 x 转换为表达式字符串。
(6)、eval(str),用来计算在字符串中的有效Python表达式,并返回一个对象(7)、tuple(s),将序列 s 转换为一个元组(8)、list(s),将序列 s 转换为一个列表(9)、set(s),转换为可变集合。
(10)、dict(d),创建一个字典d 必须是一个序列 (key,value)元组(11)、frozenset(s),转换为不可变集合(12)、chr(x),将一个整数转换为一个字符(13)、ord(x),将一个字符转换为它的整数值。
(14)、hex(x),将一个整数转换为一个十六进制字符串(15)、oct(x),将一个整数转换为一个八进制字符串二、Python函数的定义和函数的应用1、函数能提高应用的模块性,和代码的重复利用率2、参数传递为,可更改(mutable)与不可更改(immutable)对象。
3、闭包和装饰器1、函数的使用(1)、global语句可以起到声明变量作用域(2)、函数的不可变类型:类似其他语言的值传递,数值、字符串和元组为不可变类型(3)、如fun(a),传递的只是a的值,没有影响a对象本身。
比如在fun(a)内部修改a的值,只是修改另一个复制的对象,不会影响a本身函数defhello(): print(“hello function!”); hello() defp_num():global
num print(num) num=50 num=20 p_num() print(num) defarea(width, height):return width * height
defwelcome(name): print(“www.what21”, name) welcome(“.com”) width = 40 height = 50 print(“width =”, width,
“,height =”, height,”,area =”, area(width, height))2、函数的不可变类型(1)、函数的不可变类型:类似其他语言的值传递,数值、字符串和元组为不可变类型(2)、如fun(a),传递的只是a的值,没有影响a对象本身。
比如在fun(a)内部修改a的值,只是修改另一个复制的对象,不会影响a本身defChangeList(mylist):”修改传入的列表” mylist.append([1, 2, 3, 4])
# 函数内取值: [10, 20, 30, [1, 2, 3, 4]] print(“函数内取值: “, mylist) return# 调用changeme函数 mylist = [10,
20, 30] ChangeList(mylist) # 函数外取值: [10, 20, 30, [1, 2, 3, 4]] print(“函数外取值: “, mylist)3、函数的内部作用域(1)、当内部作用域需要修改外部作用域的变量时,就要用到global和nonlocal关键字。
(2)、如果需要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要nonlocal关键字defouter(): num = 10definner():nonlocal num 。
# nonlocal关键字声明 num = 100 print(num) inner() print(num) outer()4、装饰器(1)、装饰器的本质:一个闭包函数(2)、装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展。
defw1(func):definner(): print(” 验证1″) print(” 验证3″) print(” 验证4″) return func() return
inner @w1deff1(): print( f1) @w1deff2(): print(f2) @w1deff3(): print(f3) @w1deff4(): print(f4
)import time deftimer(func):definner(): start = time.time() func() end=time.time() print(end – start)
return inner print(time.time()); @timer #==> func1 = timer(func1)deffunc1(): print(in func1) func1()
三、Python面相对象编程1、概念(1)、类(Class): 用来描述具有相同的属性和方法的对象的集合它定义了该集合中每个对象所共有的属性和方法,对象是类的实例(2)、类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用。
(3)、数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据(4)、方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
(5)、实例变量:定义在方法中的变量,只作用于当前实例的类(6)、继承:即一个派生类(derived class)继承基类(base class)的字段和方法继承也允许把一个派生类的对象作为一个基类对象对待。
(7)、实例化:创建一个类的实例,类的具体对象(8)、方法:类中定义的函数(9)、对象:通过类定义的数据结构实例对象包括两个数据成员(类变量和实例变量)和方法(10)、多继承:Python支持多继承2、案例1
classUser: height=1.65 weight=120def__init__(self,name,height,weight): self.name=name self
.height=height self.weight=weight definfo(self): print(self.__class__) print(“姓名:”,
self.name,”,身高:”,self.height,”,体重:” ,self.weight) zhangsan = User(“张三”,1.65,120) zhangsan.info() lisi = User(
“李四”,1.55,140) lisi.info() print(id(zhangsan), id(lisi)) print(zhangsan==lisi) print(isinstance(zhangsan,User)) print(isinstance(lisi,User)) print(type(zhangsan)==User) print(type(lisi)==User)
(1)、_init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法(2)、self代表类的实例,self在定义类的方法时是必须有的3、案例2classUser
: height=1.65 weight=120def__init__(self,name,height,weight): self.name=name self.height=height
self.weight=weight definfo(self): print(self.__class__) print(“姓名:”,self.name,”,身高:”,self.height,
“,体重:” ,self.weight) classAdmin(User):defsetName(self,name): User.name = name; defsetHeight(self
,height): User.height = height; defsetWeight(self,weight): User.weight = weight; definfo(
self): print(self.__class__) print(User.__class__) print(“姓名:”, User.name, “,身高:”, User.height,
“,体重:”, User.weight) zhangsan = Admin(“”,0,0); zhangsan.setName(“张三”) zhangsan.setHeight(1.65) zhangsan.setWeight(
120) zhangsan.info() lisi = Admin(“李四”,1.55,140) lisi.info()(1)、实例d调用foo()时,搜索顺序是:D => C1 => C2 => P1。
(2)、实例d调用bar()时,搜索顺序是:D => C1 => C2(3)、可以看出,新式类的搜索方式是采用“广度优先”的方式去查找属性(4)、pass关键字,不做任何事情,一般用做占位语句(5)、其中:1、共有变量,直接字母开头;2、私有变量,使用__开头;3、@classmethod,装饰器函数。
四、Python异常处理和自定义异常1、概念Python提供了异常处理和断言(Assertions)功能来处理程序在运行中出现的异常和错误2、异常应用try: fh = open(“testfile”。
, “w”) fh.write(“test except!!!”) except IOError: print (“Error: not found file or read file error”
) else: print(“内容写入文件成功”) fh.close()try: fh = open(“testfile”, “w”) try: fh.write(“test except!!!”
) finally: print(“关闭文件”) fh.close() except IOError: print(“Error: 没有找到文件或读取文件失败”)(1)、当在try块中抛出一个异常,立即执行finally块代码。
(2)、finally块中的所有语句执行后,异常被再次触发,并执行except块代码3、自定义异常classMyError(Exception):def__init__(self, value): self.value = value 。
def__str__(self):return repr(self.value) try: raise MyError(2*2) except MyError as e: print(抛出自定义异常, value:
, e.value)(1)、通过继承Exception类,来创建一个新的Exception类,可以直接继承或者间接继承(2)、raise指定了要被抛出的异常4、Python标准异常BaseException->所有异常的基类。
SystemExit->解释器请求退出KeyboardInterrupt->用户中断执行(通常是输入^C)Exception->常规错误的基类StopIteration->迭代器没有更多的值GeneratorExit->生成器(generator)发生异常来通知退出
StandardError->所有的内建标准异常的基类ArithmeticError->所有数值计算错误的基类FloatingPointError->浮点计算错误OverflowError->数值运算超出最大限制
ZeroDivisionError->除(或取模)零 (所有数据类型)AssertionError->断言语句失败AttributeError->对象没有这个属性EOFError->没有内建输入,到达EOF 标记
EnvironmentError->操作系统错误的基类IOError->输入/输出操作失败OSError->操作系统错误WindowsError->系统调用失败ImportError->导入模块/对象失败
LookupError->无效数据查询的基类IndexError->序列中没有此索引(index)KeyError->映射中没有这个键MemoryError->内存溢出错误(对于Python 解释器不是致命的)
NameError->未声明/初始化对象 (没有属性)UnboundLocalError->访问未初始化的本地变量ReferenceError->弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError->一般的运行时错误NotImplementedError->尚未实现的方法SyntaxError->Python 语法错误IndentationError->缩进错误TabError->Tab 和空格混用
SystemError->一般的解释器系统错误TypeError->对类型无效的操作ValueError->传入无效的参数UnicodeError->Unicode 相关的错误UnicodeDecodeError->Unicode 解码时的错误
UnicodeEncodeError->Unicode 编码时错误UnicodeTranslateError->Unicode 转换时错误Warning->警告的基类DeprecationWarning->关于被弃用的特征的警告
FutureWarning->关于构造将来语义会有改变的警告OverflowWarning->旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning->关于特性将会被废弃的警告
RuntimeWarning->可疑的运行时行为(runtime behavior)的警告SyntaxWarning->可疑的语法的警告UserWarning->用户代码生成的警告五、模块和自定义模块1、概念
(1)、Python模块(Module)是一个Python文件,以.py 结尾,包含了Python对象定义和Python语句(2)、模块能够有逻辑地组织Python代码段(3)、把相关的代码分配到一个模块里,让代码更好用,更易懂。
(4)、模块能定义函数,类和变量,模块里也能包含可执行的代码(5)、导入语法:模块名.函数名(6)、语法:from math import *2、案例user.pyclassUser: height=。
1.65 weight=120def__init__(self,name,height,weight): self.name=name self.height=height
self.weight=weight definfo(self): print(self.__class__) print(“姓名:”,self.name,”,身高:”,self.height,
“,体重:” ,self.weight) classAdmin(User):defsetName(self,name): User.name = name; defsetHeight(self
,height): User.height = height; defsetWeight(self,weight): User.weight = weight; definfo(
self): print(self.__class__) print(User.__class__) print(“姓名:”, User.name, “,身高:”, User.height,
“,体重:”, User.weight)main.pyimport user zhangsan = user.Admin(“”,0,0); zhangsan.setName(“张三”) zhangsan.setHeight(1.65) zhangsan.setWeight(120) zhangsan.info() lisi = user.Admin(
“李四”,1.55,140) lisi.info()当导入一个模块,Python解析器对模块位置的搜索顺序是:1、当前目录2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
3、如果都找不到,Python会察看默认路径UNIX下,默认路径一般为/usr/local/lib/python/
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容