收藏 分享(赏)

《数据结构》课件1第1章基础.pptx

上传人:bubibi 文档编号:20014313 上传时间:2023-12-02 格式:PPTX 页数:93 大小:722.22KB
下载 相关 举报
《数据结构》课件1第1章基础.pptx_第1页
第1页 / 共93页
《数据结构》课件1第1章基础.pptx_第2页
第2页 / 共93页
《数据结构》课件1第1章基础.pptx_第3页
第3页 / 共93页
《数据结构》课件1第1章基础.pptx_第4页
第4页 / 共93页
《数据结构》课件1第1章基础.pptx_第5页
第5页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、主要学习内容Python基基础知知识12Python面向面向对象象编程程3数据数据结构和算法构和算法相关模相关模块Python基础知识vPython诞生于生于1990年年v支持面向支持面向对象的解象的解释型型计算机程序算机程序设计语言言单句代码交互式执行源程序批量运行v两个系列,互不兼容:两个系列,互不兼容:2.x停止更新3.x持续发展v查看看Python版本版本python-V概述几种主流程序设计语言对比Python JavaCC+C#JavaScript运行效率运行效率学学习曲曲线代代码移植性移植性开开发效率效率适用适用领域域解解释型型语言言VS编译型型语言言运行环境v官网下官网下载解解释

2、器器https:/www.python.org/downloads/v首先,首先,选择合适的版本,例如:合适的版本,例如:3.9.1v然后,根据自己的操作系然后,根据自己的操作系统选择对应安装程序安装程序v开始菜开始菜单选择Python交互编程界面集成开发环境-IDLEvPython解解释器自器自带PycharmvJetBrains开开发的的优秀秀Python开开发环境境变量v变量需要使用内存量需要使用内存v变量的三个属性量的三个属性名值地址vPython变量无需定量无需定义即可直接即可直接赋值vPython解解释器会根据器会根据赋值自自动推推导出出变量的量的类型型vPython变量的地址在量

3、的地址在赋值后可能后可能发生生变化化数值类型v四种数四种数值类型:型:整型(int)浮点型(float)复数型(complex)布尔型(bool)整型v最最简单且常用的且常用的数据数据类型型vPython的整型使用的整型使用时无无须担心担心变量的量的“溢出溢出”随着整型变量值的大小而动态改变所用内存的大小v整型的运算整型的运算加减乘除乘方求余浮点型v浮点型会出浮点型会出现舍入舍入误差差v计算机表示浮点数算机表示浮点数“先天不足先天不足”v下面两个下面两个语句句结果不等果不等print(0.1*26)#0.1乘以26print(0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.

4、1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1)#26个0.1连加v判断两个浮点数相等判断两个浮点数相等求二者差的绝对值,判断是否小于一个很小的值复数型v复数由复数由实部和虚部部和虚部组成成a+bj其中a 表示实部,b 表示虚部real属性可以得到复数的实部imag属性可以得到复数的虚部conjugate方法可以得到当前对象的共轭复数v复数直接支持加、减、乘、除和乘方数学复数直接支持加、减、乘、除和乘方数学操作操作v对复数复数执行复行复杂的数学运算,需要引入的数学运算,需要引入cmath模模块布尔型v只

5、有两个只有两个值TrueFalsev布布尔型和数字型和数字进行数学运算行数学运算1+True字符串v字符串是数字符串是数值型之外使用最多的型之外使用最多的数据数据类型型vPython的字符串明的字符串明显的的特色特色多样的书写方式负索引灵活的切片v字符串是不可修改字符串是不可修改的的v如果如果需要需要对字符串字符串进行修改,行修改,实质是得到一个新的是得到一个新的字符串字符串字符串常量v四种方式四种方式单引号hello双引号Im a student.三个单引号三个双引号转义符v反斜杠反斜杠是是转义符符v在在字符串常量前面写一个字符串常量前面写一个r抑制抑制转义print(C:UsersPubl

6、icDownloads)print(rC:UsersPublicDownloads)转义表示形式表示形式描述描述反斜杠符号单引号双引号b退格(Backspace)n换行v纵向制表符t横向制表符r回车字符串索引v正向索引从正向索引从0开始开始v负索引从索引从-1开始开始字符串切片v切片可以非常方便地得到字符串的子串或者子串的切片可以非常方便地得到字符串的子串或者子串的变形形字符串起点:终点:步长v切片例子切片例子str1=Soochowprint(str12:4:1)#对第2个和第3个字符切片print(str12:4:)#对第2个和第3个字符切片print(str1:2)#从头到尾,每隔一个字

7、符切片print(str1:-1)#通过切片得到字符串的逆序串字符串常见操作v字符串字符串连接接print(Soochow+University)#字符串连接v字符串重复字符串重复print(dog*3)#字符串重复3次v得到字符内得到字符内码print(ord(A)#得到A的内码v根据内根据内码得到字符得到字符print(chr(97)#得到97作为内码所对应的字符字符串常用方法方法方法说明明string.count()返回字符串指定子串出现的次数string.endswith()检查字符串是否以指定字符串结束string.find()查找子串,如果存在返回开始的索引值,否则返回-1stri

8、ng.index()和find()方法一样,但如果子串不存在将会出现一个异常string.isalnum()如果string所有字符都是字母或数字则返回True,则返回Falsestring.isalpha()如果string所有字符都是字母返回True,否则返回Falsestring.isdecimal()如果string只包含十进制数字返回True,否则返回Falsestring.isdigit()如果string只包含数字则返回True否则返回Falsestring.isnumeric()如果string只包含数字字符,则返回True,否则返回Falsestring.isspace()如

9、果string只包含空格,则返回True,否则返回Falsestring.join()拼接字符串string.lower()转换string所有大写字符为小写string.replace()字符串替换string.rfind()类似于find()方法,但是从右边开始查找string.rindex()类似于index()方法,但是从右边开始查找string.split()拆分字符串string.startswith()检查字符串是否以指定字符串开头string.title()所有单词转换为大写开始,其余字母均为小写string.upper()转换string的小写字母为大写Python内置组合类

10、型v四种内置四种内置组合合类型型列表元组字典集合列表v列表相当于列表相当于其他其他语言中的言中的动态数数组v可以通可以通过下下标便捷地便捷地访问列表的列表的元素元素v可以很容易地修改列表、添加和可以很容易地修改列表、添加和删除元素除元素v列表自列表自带了排序、逆序等方法了排序、逆序等方法vPython中的列表可以是异构中的列表可以是异构的的一个列表中每个元素的类型可以不一样列表简单例子lst1=#空列表空列表print(lst1)lst2=1,2,3#列表初始化列表初始化print(lst2)lst3=1,abc,3,4#元素元素类型不同的列表型不同的列表print(lst3)lst4=lis

11、t(hello)#将字符串将字符串转换为列表列表print(lst4)列表常用操作v和字符串的和字符串的操作操作可以通过+运算符实现两个列表的连接可以用*运算符实现把一个列表重复n次v列表常用函数列表常用函数函数函数说明明len()返回列表元素个数list()将其他序列转换为列表max()返回列表元素最大值min()返回列表元素最小值sorted()返回排序的结果通过切片修改列表v可以可以通通过切片修改列表元素切片修改列表元素v如下如下的代的代码把列表中的元素修改成了把列表中的元素修改成了0和和1交替的数交替的数值。lst=1,2,3,4,5,6,7,8,9lst:2=0*len(lst:2)

12、lst1:2=1*len(lst1:2)print(lst)列表常用方法方法方法说明明list.append()在列表末尾添加新的对象list.clear()清空列表list.copy()复制列表list.count()统计某个元素在列表中出现的次数list.extend()在列表末尾扩展某个列表中的所有元素list.index()从列表中找出某个值第一个匹配项的索引位置list.insert()将对象插入列表指定的位置list.pop()删除列表中的一个元素(默认最后一个元素),且返回该元素值list.remove()基于值删除列表中的第一个匹配项list.reverse()逆序列表中元素l

13、ist.sort()对列表进行排序append和extend辨析vappend方法方法lst=1,3,5lst.append(2,7)print(lst)结果是:1,3,5,2,7vextend方法方法lst=1,3,5lst.extend(2,7)print(lst)结果是:1,3,5,2,7sort方法和sorted函数辨析v二者都可以二者都可以对列表排序列表排序vsort方法方法对当前当前对象象排序排序当前对象会被修改成排序后的结果该方法的返回结果是Nonelst=1,2,5,3lst.sort()#lst中的数据被排序vsorted函数函数第一个参数是待排序的数据但是并不会修改它将排序

14、结果以列表形式返回lst=1,2,5,3res=sorted(lst)#lst中的数据保持原序,res中是排序的结果列表的浅拷贝和深拷贝vPython列表之列表之间赋值默默认是浅拷是浅拷贝lst1=1,3,5lst2=lst1lst22=7print(lst1)#此时lst1也已经变成了1,3,7v列表的深拷列表的深拷贝lst1=1,3,5lst2=lst1.copy()#利用copy方法实现lst2和lst1分别是独立的内存lst3=lst1:#利用分片实现lst3和lst1分别是独立的内存元组v元元组可以看成不可修改可以看成不可修改的的列表列表v有些有些数据是只数据是只读数据数据选用元组将

15、会避免误修改数据导致程序逻辑错误v元元组定定义使用使用圆括号括号v空的元空的元组就是一就是一对空的空的圆括号括号tup1=()#空元组v如果如果元元组只包含一个元素,需要在此元素后面添加只包含一个元素,需要在此元素后面添加逗号逗号tup2=(3,)#一个元素的元组v从列表得到元从列表得到元组lst=武汉,孝感,黄冈tups=tuple(lst)#从列表得到元组元组补充说明v元元组的元素不可以的元素不可以删除除v可以用可以用del删除整个元除整个元组v如果确如果确实需要从元需要从元组删除元素除元素通常是生成新的元组集合v集合是一个无序的且无重复元素的集合是一个无序的且无重复元素的序列序列集合中的

16、数据对于Python程序员而言是无序的v集合集合非常适合用于去除重复非常适合用于去除重复项v可以使用大括号可以使用大括号或者或者set()函数函数创建集合建集合建一个空集合必须用set()而不是用一对空的和空字典产生二义性v在向集合中添加元素在向集合中添加元素时,如果,如果该元素不存在元素不存在则添加,否添加,否则不不进行任何行任何操作操作集合常用方法方法方法说明明add()为集合添加元素clear()清除集合的所有元素copy()产生集合的一个副本difference()返回多个集合的差集discard()删除集合指定的元素,如果不存在就放弃intersection()返回集合的交集isdi

17、sjoint()判断两个集合是否包含相同的元素issubset()判断指定集合是否为该方法参数集合的子集issuperset()判断指定集合是否为该方法参数集合的超集remove()删除指定元素,如果不存在就抛出异常symmetric_difference()返回两个集合不重复的元素集合union()返回两个集合的并集update()给集合添加元素字典v列表、元列表、元组和字符串都是用整数作和字符串都是用整数作为索引从而索引从而访问元素元素v字典用关字典用关键字作字作为索引索引v字典字典用于表示用于表示“键:值”对的数据的数据,键就是关键字,具有唯一性在一个字典中一个关键字只能出现一次,不可以

18、重复值可以重复v字典字典中的数据中的数据对于于Python程序程序员而言是无序的而言是无序的创建字典v显式式创建字典的建字典的语法如下:法如下:字典名=关键字1:值1,关键字2:值2,关键字n:值nv几个几个创建字典的例子建字典的例子dict1=#空字典dict2=dict()#空字典dict3=壹:1,贰:2,叄:3#显式定义字典dict4=dict(dog,狗,cat,猫)#基于元组定义字典访问字典的元素v两种方法两种方法获取指定取指定键的的值v方括号方括号dict1=壹:1,贰:2,叄:3print(dict1壹)#输出1print(dict1肆)#该语句会出错vget方法方法dict1

19、=壹:1,贰:2,叄:3print(dict1.get(壹,None)#输出1print(dict1.get(肆,None)#输出None字典常用方法方法方法说明明clear()删除字典内所有元素copy()返回一个字典的拷贝fromkeys()基于现有的序列创建一个新字典get()返回指定键的值,如果值不在字典中返回指定的默认值items()以列表返回可遍历的(键,值)keys()返回所有的键update()合并指定字典的项到当前字典values()返回所有的值pop()删除字典给指定键所在的项,并返回该项的值has_key()判断指定的键在字典中是否存在字典例子words=星期一星期一:m

20、onday,星期二星期二:tuesday,星期三星期三:wendsday,星期四星期四:thursday,星期五星期五:friday,星期六星期六:saturday,星期天星期天:sundayword=input(请输入中文入中文)print(words.get(word,查无此无此词)Python运算符v运算符运算符可以可以对一个或者多个操作数一个或者多个操作数进行行计算并返回算并返回结果果单目运算符(一元运算符)not双目运算符(二元运算符)and常用运算符v设num1=3,num2=5运算符运算符类型型运算符运算符说明明算算术运算符运算符+加法,num1+num2的结果是5-减法,num

21、1-num2的结果是-2*乘法,num1*num2的结果是15/除法,num1*num2的结果是0.6%求余,num1%num2的结果是3*乘方,num1*num2的结果是243/整数除,num1/num2的结果是0关系运算符关系运算符大于,num1num2的结果是False小于,num1=大于等于,num1=nuum2的结果是False=小于等于,num11andnum2=4ornum2=5的结果为Truenot逻辑非,notnum1的结果为False常用运算符(续)v设num1=3,num2=5运算符运算符类型型运算符运算符说明明简单赋值运算符运算符=赋值运算符,num1=num2的结果是

22、使得num1等于5位运算符位运算符&按位与,num1&num2的结果是1|按位或,num|num2的结果是7按位取反,num1的结果是-4按位异或,num1num2的结果是6左移,num1右移,num11的结果是1成成员资格运算符格运算符in是否存在,num1in1,3,5的结果为Truenotin是否不存在,num2notin2,4,6的结果为True身份运算符身份运算符is是否引用同一对象,num1isnum2的结果是Falseisnot是否引用非同一对象,num1isnotnum2的结果是True复合运算符v用二元运算符和用二元运算符和“=”组合而合而成成+=-=*=/=v例子例子num

23、1=3num1+=1#使用复合运算符给num1加1num1=num1+1#使用简单运算符给num1加1运算符被重载v一个运算符在不同上下文有不同含一个运算符在不同上下文有不同含义v例如:例如:+3+5#数值相加1,2,3+4,5,6#列表拼接“hello”+“world!”#字符串连接(3+5j)+(4+7j)#复数相加=和is运算符辨析v=判断两个对象的值是否相等vis判断两个对象是否引用了同一个对象v例子:例子:lst1=1,2lst2=1,2print(lst1=lst2)#此行会输出Trueprint(lst1 is lst2)#此行会输出False运算符的优先级序号序号运算符运算符说

24、明明1*乘方2按位取反3+、-正、负4*、/、%、/乘、除、求余、整除5+、-加、减6移位运算符7&按位与8按位异或9|按位或10、=、!=、=关系运算符11is、isnot身份运算符12in、notin成员测试13not逻辑非14and逻辑与15or逻辑或16=赋值(包括复合赋值)圆括号改变优先级v在在编写程序遇到写程序遇到优先先级不太清晰不太清晰时通过圆括号指明优先顺序可以提高代码的可读性v例子:例子:num1 2 and num1 4 and num2 2 and num1 4 and num2 8)#虽然执行结果一样,但前者的可读性就弱于后者函数v函数是可重复使用的程序代函数是可重复使

25、用的程序代码段段v是是一个能完成特定功能的代一个能完成特定功能的代码块。v分分类:内置函数用户自定义函数v优点点便于程序架构使得问题被分而治之便于协作代码编写提高代码复用降低代码冗余函数的定义v定定义:指定函数名设计函数的形式参数实现函数的功能代码v形式:形式:def 函数名(形式参数表):函数体v注意点注意点其中函数名和变量名一样,需要尽量做到顾名思义函数的形式参数可以多个,也可没有,没有参数时圆括号不能省略函数体属于函数定义的内部语句块,必须缩进函数例子defisPrime(num):本函数用于判断一个正整数是不是本函数用于判断一个正整数是不是质数数:paramnum:待判断的正整数待判断

26、的正整数:return:True-是是质数数Fasle-不是不是质数数None-参数不合法参数不合法ifisinstance(num,int)=False:returnNoneifnum=0:returnNoneifnum=1:returnFalseimportmathmaxNumber=int(math.sqrt(num)foriinrange(2,maxNumber+1):ifnum%i=0:returnFalsereturnTrue函数的返回值v函数可以用函数可以用return语句向句向调用者用者传递值vPython中函数的返回中函数的返回值非常非常灵活灵活可以是数值常量、变量、表达式等

27、,甚至是函数v如果一个函数没有如果一个函数没有return语句,那么句,那么该函数最函数最终会返回会返回NonePython的函数一定有返回值v在在执行行时一旦遇到一旦遇到return语句,句,该函数后函数后续代代码将不再将不再执行行一次返回多个值v样例:例:def calc(marks):maxVal=max(marks)minVal=min(marks)return maxVal,minVal,(sum(marks)-maxVal-minVal)/(len(marks)-2)maxMark,minMark,averMark=calc(88,65,78,99,45,72)print(最高分:

28、,maxMark)print(最低分:,minMark)print(平均分:,averMark)函数调用v形式参数形式参数定义函数时的参数v实际参数参数调用函数时的参数v调用函数用函数时通常需要通常需要满足两个条件足两个条件:(1)实际参数和形式参数的数量相同(2)实际参数的顺序和形式参数一一对应普通对象参数传递v普通普通对象的象的值传递是是单向向的的def exchange(num1,num2):num1,num2=num2,num1 print(num1,num2)#输出交换后的值num1=5num2=7print(num1,num2)#输出调用前的值,是5,7exchange(num1,

29、num2)#试图交换print(num1,num2)#输出调用后的值,还是5 7可变对象参数传递v可可变对象的象的值传递是是双向双向的的def change(lst,dict1):lst0=2 dict1one=一lst=1,2,3dict1=one:1change(lst,dict1)print(lst)print(dict1)调用函数指定参数名v用用时允允许采用指定形式参数名的方式采用指定形式参数名的方式实现“乱序乱序”调用用def example(num1,num2):print(num1=,num1,num2=,num2)example(20,10)example(num2=10,nu

30、m1=20)函数的形式参数指定默认值v科学的默科学的默认值可以可以为函数函数调用者用者带来便利来便利v例如内置排序函数:例如内置排序函数:sorted(iterable,key=None,reverse=False)后面两个参数都提供了默认值常用内置函数函数名函数名说明明bin()返回数字转2进制的结果字符串chr()返回内码所对应的字符eval()计算表达式的值help()返回指定模块或者函数的说明文档hex()返回数字转16进制的结果字符串id()返回对象的内存地址isinstance()判断一个对象是否指定类的实例map()返回对指定序列映射后的迭代器ord()返回字符的内码,对于西文而

31、言就是ASCII码range()返回一个可迭代对象type()返回对象的类型输入函数v内置内置input函数函数input(prompt)其中的prompt是运行时给用户的提示字符串该函数的返回值是字符串v样例代例代码str1=input(请输入一个字符串)#取字符串输入则无须转换print(str1)num=int(input(请输入一个整数)#可以int强制转换print(num)nums=list(map(int,input(请输入多个整数用空格分开).split()#获取多个整数到列表print(nums)输出函数vprint函数用于打印函数用于打印输出,出,该函数的原型如下:函数的原

32、型如下:print(*objects,sep=,end=n,file=sys.stdout,flush=False)objects表示可以一次输出多个对象输出多个对象时,需要用“,”分隔sep用于分隔输出的多个对象,默认值是一个空格end表示print输出完成后的结束符号,默认值是换行符 n file表示要重定向的文件对象,默认值sys.stdout为标准输出(显示器)flush表示输出是否被缓存文件v文件是存文件是存储在外部介在外部介质上一上一组相关信息的相关信息的集合集合v文件文件为程序持久存程序持久存储数据提供数据提供保障保障v对文件操作可以抽象成三个步文件操作可以抽象成三个步骤:1.打

33、开文件、2.进行读写操作3.关闭文件v读操作是指从文件操作是指从文件输入数据到内存入数据到内存变量量v写写操作是指从操作是指从内存内存输出出到文件到文件打开文件v打开文件必打开文件必须用用open函数,函数,该函数原型如下:函数原型如下:open(file,mode=r,buffering=-1,encoding=None)file参数是一个字符串,用于指定文件的路径可以是相对路径,也可以是绝对路径mode也是一个字符串,用于指定打开文件的模式encoding用于指定文件的编码格式打开文件的方式模式模式说明明b二进制模式r以只读方式打开文本文件。rb以二进制格式打开一个文件用于只读r+打开一个

34、文件用于读写rb+以二进制格式打开一个文件用于读写w打开一个文件只用于写入。如果该文件已存在则打开文件(原有内容会被删除),否则创建新文件wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件(原有内容会被删除),否则创建新文件w+打开一个文件用于读写。如果该文件已存在则打开文件(原有内容会被删除),否则创建新文件wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件(原有内容会被删除),否则创建新文件a打开一个文件用于追加。如果该文件已存在则打开文件并定位文件指针到文件结尾,否则创建新文件ab以二进制格式打开一个文件用于追加。如果该文件已存在则打开文件并定位文件指针到

35、文件结尾,否则创建新文件a+打开一个文件用于读写。如果该文件已存在则打开文件并定位文件指针到文件结尾,否则创建新文件ab+以二进制格式打开一个文件用于追加。如果该文件已存在则打开文件并定位文件指针到文件结尾,否则创建新文件文件常用读写方法方法方法说明明close()关闭文件flush()强制把内部缓冲区的数据立刻写入文件read()从文件读取指定的字节数,如果为空或为负则读取所有readline()读取一行readlines()读取所有行并返回列表seek()移动文件读取指针到指定位置tell()返回文件当前位置。write()将字符串写入文件writelines()向文件写入列表中所有数据实

36、现文本文件复制的例子def copyFile(src,des):srcFp=open(src,r)desFp=open(des,w)ch=srcFp.read(1)while ch!=:desFp.write(ch)ch=srcFp.read(1)srcFp.close()desFp.close()异常处理v软件天然的复件天然的复杂性性,运行,运行时可能遇到各种各可能遇到各种各样的的异常:异常:例如网络通信程序可能遇到网络断开、通讯不畅的情况大数据处理程序可能遇到内存不够的情况v程序程序错误可以分可以分为语法错误运行错误逻辑错误v一个一个良好的程序需要良好的程序需要处理程序运行理程序运行时的异

37、常,使得程序在运行的异常,使得程序在运行遇到异常遇到异常时做出合理的反做出合理的反应Python与异常v异常是一个事件,它异常是一个事件,它发生在程序的运行生在程序的运行期期v在在遇到无法正常遇到无法正常处理的代理的代码时会引会引发异常异常v出出现异常会影响程序的正常异常会影响程序的正常执行,将行,将导致程序的运行致程序的运行过程偏离程偏离设计的流程的流程。v当当Python程序程序发生异常生异常时,必,必须捕捕获并并处理它,否理它,否则程序将程序将会被会被终止止执行行。v程序程序员希望程序的希望程序的执行行过程在掌控之中,不希望因程在掌控之中,不希望因为用用户操作操作不当,或者运行不当,或者

38、运行环境境变化等化等缘由由导致程序被致程序被终止止执行。行。Python对异常的支持vPython语言言对异常异常处理提供了完理提供了完备的的支持支持v主要主要涉及的涉及的关关键字字try监视异常raise抛出异常except捕获异常else不出现异常时执行其语句块finally无论是否出现异常都会执行其语句块异常处理器try:语句块except 异常类型1 as 错误描述:异常处理语句块1except 异常类型n as 错误描述:异常处理语句块nexcept:默认异常处理语句块else:未处理异常才执行的语句块finally:一定被执行的语句块错误与异常处理原则v程序程序遇到遇到错误情况情况

39、时,如果,如果还能以某种方式能以某种方式执行下去,不要随行下去,不要随意意终止止执行,不行,不轻易易崩崩溃v遇到遇到错误时,不出,不出现任意的非任意的非预期期行行为v在在某个局部某个局部发生生错误时,尽可能局部,尽可能局部处理理v异常异常处理机制已理机制已经成成为现代程序代程序设计处理理错误的的标准准模式模式v使用使用了异常了异常处理之后会理之后会显著增著增强程序的健壮性程序的健壮性模块v一一个大的程序往往包括多个个大的程序往往包括多个源文件源文件通常包含用户自定义的变量、函数和类v一个一个源文件可以被源文件可以被称称为一个模一个模块v若干个功能相关的模若干个功能相关的模块组合在一起称合在一起

40、称为包包包中必须有一个名称为_init_.py的文件包中除了有模块,还可以有包一个包中也可以只有一个模块v包包和模和模块两个两个词汇有有时区分的并不区分的并不明明显v若干个功能相关的包在一起称若干个功能相关的包在一起称为库标准库和第三方库v标准准库安装Python时附带的库例如:randommathv第三第三方方库需要另外安装的库例如:numpywordcloud三种导入模块的方式vimport语句句导入入模模块,三种方式,三种方式import 模块名1 as 别名,模块名2 as 别名 import mathprint(math.sqrt(2)from 模块名 import 函数名 as 别

41、名,函数名 as 别名from math import sqrtprint(sqrt(2)from 模块名 import*from math import*print(sqrt(2)管理第三方包vPython附附带了包的管理工具:了包的管理工具:pipv提供了提供了对Python包的包的查找、下找、下载、安装、卸、安装、卸载的功能的功能功能功能命令命令显示版本示版本pip-version查看帮助看帮助pip-help安装包安装包pipinstall包名安装指定版本的包安装指定版本的包pipinstall包名=版本号升升级包包pipinstallu包名显示包的信息示包的信息pipshow包名列出

42、已列出已经安装的包安装的包piplist查看可以升看可以升级的包的包piplist-o搜索包搜索包pipsearch包名卸卸载包包pipuninstall包名面向对象编程面向对象基本概念v类:具有相同属性和方法的:具有相同属性和方法的对象的集合象的集合。v对象象:对象是象是类的的实例,例,类和和对象是抽象和具体的关系,一个象是抽象和具体的关系,一个类可可以以产生多个生多个实例例。v方法:方法:类中的函数被称中的函数被称为方法,方法是方法,方法是类的的动态特性,方法也被称特性,方法也被称为函数成函数成员。v属性属性:类中的中的变量被称量被称为属性,属性是属性,属性是类的静的静态特性,属性也被称特

43、性,属性也被称为数据成数据成员。v封装封装与与隐藏:在藏:在设计类的的时候将抽象出方法和属性的候将抽象出方法和属性的过程叫封装,程叫封装,然后通然后通过设置置权限将部分方法和属性不限将部分方法和属性不为外界所用的外界所用的过程叫程叫隐藏。藏。v继承与派生:允承与派生:允许在在创建建类时基于已有的基于已有的类扩展,已有的展,已有的类叫基叫基类(父(父类),新建的),新建的类叫派生叫派生类(子(子类)类的定义v不不仅可以使用系可以使用系统定定义好的好的类,也支持用,也支持用户自定自定义类v定定义类的的语法如下法如下:class 类名:属性的定义方法的定义方法的self参数v类成成员函数的第一个参数

44、都是函数的第一个参数都是self,self是一个约定俗成的变量名,用于表示当前对象v类的成的成员函数是本函数是本类的所有的所有对象共享象共享的的v每个每个对象象调用成用成员函数函数时,自,自动把自身把自身传递过来来v通通过self可以得到可以得到调用成用成员函数的当前函数的当前对象象类变量和实例变量v类变量量类变量是定义在类内部但又在类的成员函数之外它是类的所有对象共享的、公用的一个类有一个类变量,该类产生多少个对象,此类变量只有一份v实例例变量量实例变量是每个实例独有的每个对象的实例变量互不影响一个类有一个实例变量,该类产生了n个对象,就有n份此实例变量成员的权限v面向面向对象象的的隐藏就必

45、藏就必须依依赖私有和保私有和保护权限才能落地限才能落地实现v类中的成中的成员可以有三种可以有三种权限限:公有私有保护v如果如果类的成的成员称称为内部,内部,类的使用者称的使用者称为外部外部在类内外部都可以访问公有的成员只有内部可以访问私有的成员内部和子类的成员函数都可以访问保护的成员外部无法访问保护成员_init_方法v_init_是是类的一个特殊方法,被称的一个特殊方法,被称为类的构造的构造方法方法v两两个下划个下划线开开头暗示了它是私有暗示了它是私有的的不可以被类外部直接调用。v每当每当用用类产生生对象,都会自象,都会自动调用此用此方法方法v它它非常适合用于初始化数据非常适合用于初始化数据

46、成成员继承与派生v类的的两个两个作用作用是产生对象作为基类进行继承派生v继承派生的承派生的语法如下:法如下:class 类名(基类名称1,基类名称2):属性的定义方法的定义迭代器v迭代器是一个可以遍迭代器是一个可以遍历而且自己而且自己记录遍遍历位置的位置的对象象v它它的工作模式属于的工作模式属于“懒惰模式惰模式”在调用迭代器时才会返回下一个元素在处理海量数据时就无须预先产生大量数据或者把大量数据加载到内存v迭代迭代器从数据的第一个元素开始器从数据的第一个元素开始访问,直到所有的元素被,直到所有的元素被访问完完结束束v迭代迭代器只能器只能单向往前,不可以向往前,不可以后退后退v迭代迭代器内部需要

47、器内部需要维护自己的自己的状状态v一个一个类如果如果实现了了_iter_和和_next_方法就属于迭代器方法就属于迭代器类生成器v生成器也是可迭代生成器也是可迭代的的v不用不用实现_iter_和和_next_方法方法v只需只需要使用关要使用关键字字yieldv生成器生成器实质上是一个上是一个函数函数该函数中未使用return而是使用了yield关键字数据结构和算法相关模块抽象类v如果如果一个一个类不能不能产生生对象,那么象,那么这个个类被称被称为抽象抽象类v抽象抽象类只能作只能作为基基类,因此抽象,因此抽象类也被称也被称为抽象基抽象基类v抽象抽象类最大的作用是使得子最大的作用是使得子孙类都有所

48、希望的都有所希望的方法方法从而使得调用者可以规范统一地调用处理子孙类的方法vPython中中实现抽象基抽象基类需要使用需要使用abc模模块asbstract base class抽象类的例子import abcclass animal(metaclass=abc.ABCMeta):#抽象类 abc.abstractmethod def sound(self):#抽象方法 pass基于抽象类派生class dog(animal):def sound(self):#给出抽象方法的具体实现 print(汪汪汪)class cat(animal):def sound(self):#给出抽象方法的具体实

49、现 print(喵喵喵)class duck(animal):def sound(self):#给出抽象方法的具体实现 print(嘎嘎嘎)通过统一接口访问def playSound(temp):#本函数代码无须修改可以调用animal各种派生类的sound()方法temp.sound()dog1=dog()cat1=cat()duck1=duck()playSound(dog1)playSound(cat1)playSound(duck1)ctypes模块vPython的的ctypes模模块提供了一系列与提供了一系列与C、C+语言兼容的言兼容的数据数据结构构类与与方法方法可以调用C源代码编译

50、得到的动态链接库从而实现Python程序与C程序之间的数据交换与调用。v操作系操作系统的的API的的参数通常是用参数通常是用C语言描述的言描述的Application Programming Interface,应用程序接口借助ctypes模块,Python可以调用API直接和操作系统交互array模块vPython的列表相当于的列表相当于传统语言的数言的数组,但是比数,但是比数组方便方便灵活、灵活、元素可以异构可以很方便的扩展大小v列表的列表的效率和效率和传统语言的数言的数组相差甚相差甚远vPython提供了提供了array模模块它是一种高效的数组存储类型所有的数组成员必须是同一种类型在创建

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证 > 计算职称

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报