《数据分析基础与实践完整版教学课件全书电子讲义(最新).pptx》由会员分享,可在线阅读,更多相关《数据分析基础与实践完整版教学课件全书电子讲义(最新).pptx(417页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章第一章 概论概论西华大学西华大学数据分析基础与实践第一章 走进PythonXXX学校XXXXXX20222022目录Contents课程介绍了解PythonPython安装开发环境搭建求是 明德 卓越课程介绍一 4 XXXXXXXXXXXXXXXXX1.1 为什么学习为什么学习4当今社会从IT时代进入DT时代,数据分析技术十分重要。数据分析是一种思想,一种方法,一种处理问题的工具,这种工具可以应用到很多不同的研究领域,从应用的领域实现学科融合。本课程将包括必要的语言基础和编程思想,完整的数据分析方法理论基础,详细的应用案例实践分析。希望通过大量的实际应用案例,引导读者快速进入数据分析的世
2、界,通过不断的练习和案例复现,快速积累学习的成就感,保持学习的激情。5 XXXXXXXXXXXXXXXXX1.2 课程组成课程组成Python语言基础:在数据分析中,必须要借助一些编程语言才能完成相应的分析任务。数据分析最常用的语言就是Python,因此在正式进入数据分析相关内容介绍之前,首先学习Python语言的相关基础知识。数据分析基础:重点介绍基于Python进行数据分析的基本思路和方法,包括数据获取、数据预处理、数据分析等。数据分析实战:通过对几个完整的数据分析案例的介绍,加深读者对于利用Python进行数据分析方法的理解。5求是 明德 卓越了解Python二 72.1 2.1 什么是
3、什么是PythonPython7Python是一种面向对象的高级编程语言,它具有集成的动态语义,主要用于Web和应用程序开发,以及科学研究。Python支持使用模块和包,可以以模块化的方式进行程序设计,并且可以在各种项目中重用代码。具有完备的开发社区,全球众多开源资源可控使用。Python相对简单,易于学习标准库和解释器都是免费的,既有二进制形式,也有源代码形式。也没有排他性,因为Python和所有必需的工具在所有主要平台上都可用。82.2 Python的产生与发展 92.3 Python的特点的特点9简单:Python是一门简单而语法简约的语言。阅读好的Python程序感觉就像阅读英语,尽管
4、是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让程序员专注于解决问题的办法而不是语言本身。容易学习:Python非常容易上手,它具有格外简单的语法。102.3 Python的特点的特点10免费开源:Python是一个FLOSS(自由/自由与开源软件)的例子。在一些简单的条款之下,你可以自由地分发这个软件的拷贝,阅读其源代码,修改它,或者将其一部分用到新的自由程序中。FLOSS是基于共享知识社区的概念,这是Python如此好的原因之一它是由那些希望看到更好的Python的社区创建和不断改进的。高级语言:当使用Python编写程序时,永远不需要担心低级细节,比如对内存的管理和
5、使用等。112.3 Python的特点的特点11可移植性:基于其开放源代码的特性,Python已经被移植到许多平台。只要你足够小心,避免使用系统相关特性,你的所有Python程序都可以不加修改地运行在这其中任意平台。解释型语言:Python不需要事先进行编译,只需从源代码直接运行程序即可,不必担心程序的编译、保证恰当的库被链接和载入等等。这也使得Python程序更易于移植。(C和C+是编译型的语言,需要先编译再执行)122.3 Python的特点的特点12面向对象特性:Python同时支持面向过程和面向对象编程。在面向过程语言中,程序围绕着过程或者函数(只不过是可重复使用的程序片段)构建。在面
6、向对象语言中,程序围绕着对象(数据和功能的组合)构建。Python具有非常强大但是过于简洁的执行面向对象编程的方式。可扩展性强:如果需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,通常可以使用C或C+完成那部分程序,然后从Python程序中调用。132.3 Python的特点的特点13可嵌入:程序员可以将Python嵌入到C/C+程序中,使其获得“脚本化”的能力。强大的扩展库:Python标准库已经能够帮助用户完成许多工作,包括正则表达式、文档生成、单元测试、线程、数据库等。除了标准库,还有各式各样的其它高质量的第三方库,可以在Python包索引中找到它们。也有很多热门的交流社区
7、,每天都有很多优秀的第三方库发布。142.4 Python的应用的应用应用 Django、Flask等框架Web应用开发利用Python编写各种自动化运维脚本自动化运维Python 在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流编程语言。科学计算和人工智能Python 提供有很多服务于编写网络爬虫的工具以及完整的爬虫框架网路爬虫很多游戏使用 C+编写图形显示等高性能模块,而使用 Python 编写游戏的逻辑。游戏开发图像处理、机器人控制等。其他求是 明德 卓越Python的安装三 163 Python的安装16目前,Python有两个版本供大家选择和使用,即Python2.x和
8、Python3.x。Python3.x是对Python2.x的一个较大的更新。由于Python3.x在设计的时候并没有考虑到向下相容,因此许多针对Python2.x设计的函数、语法或者库等都无法在Python3.x正常执行。并且Python核心团队计划在2022年停止对Python2的支持。因此建议大家使用Python3.x。173 Python的安装17若读者仅需要使用Python编译环境,可采用1.2.1节的官方安装方式。若读者需要利用Python进行数据分析和处理,需要使用到各种Python库,例如Numpy、Scipy、Pandas、Scikit-learn,在这样的情况下,建议使用1
9、.2.2节介绍的Anaconda安装方法,可同时完成Python及各种库的安装,非常方便。183 Python的安装18Anaconda是专注于数据分析的Python发行版本,包含了Conda、Python等190多个科学包及其依赖项。其中,Conda是开源包和虚拟环境的管理系统。用户可以使用Conda来安装、更新、卸载工具包,并且它更加关注于数据科学相关的工具包,在安装Anaconda时,就预先集成了常用的Numpy、Scipy、Pandas、Scikit-learn这些数据分析中常用的包。出于省时省心角度出发,强烈建议大家安装Anaconda。求是 明德 卓越开发环境搭建四 204 开发环
10、境搭建20安装完成Python运行环境之后,其实就可以通过命令行来编写Python程序了,不过这种方法和其他编程语言的使用习惯相差很大,很多人都不太愿意直接在命令行中进行Python代码的编写,因此用户还需要安装可用于Python开发的IDE工具。推荐Jupyter Notebook(有时候将其简称为Jupyter)和PyCharm两种开发工具。前者是一种基于网页的用于交互计算的应用程序,后者更接近于其他语言的IDE环境。如果之前直接安装了anaconda,那么已经自动安装好了Jupyter了。感谢聆听第一章第一章 概论概论西华大学西华大学数据分析基础与实践第二章 Python语法基础XXX学
11、校XXXXXX20222022目录Contents第一个Python程序Python的基本语法变量与基本数据类型流程控制函数、模块和包异常处理求是 明德 卓越第一个Python程序一 25 XXXXXXXXXXXXXXXXX1.1 技术要点技术要点25从输出一行“Hello World”开始。需要用到Python的输出函数print。Python中的print函数用于打印输出,其语法为:参数说明:lObjects:复数,表示可以一次输出多个对象。输出多个对象时,需要用“,”分隔。lSep:用来间隔多个对象,默认值是一个空格。lEnd:用来设定什么结尾,默认值是换行符n,可以换成其他字符串。lf
12、ile:要写入的文件对象。print(*objects,sep ,end=n,file=sys.stdout)26 XXXXXXXXXXXXXXXXX1.1 技术要点技术要点温馨提示:print在Python3.x版本中是一个函数,但是在Python2.x中不是一个函数,只是一个关键字。在Python2.x中,如果想让print语句输出的内容在一行上显示,可以在后面直接加上逗号就可以了,但是在Python3.x中,使用print()函数时,不能直接加上逗号,需要加上“,end=分隔符”。26 27 XXXXXXXXXXXXXXXXX1.2 编程实现编程实现27利用Jupyter Noteboo
13、k实现 28 XXXXXXXXXXXXXXXXX1.2 编程实现编程实现28利用PyCharm实现求是 明德 卓越Python的基本语法二 302.1 2.1 编码问题编码问题30默认情况下,Python 3的源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。可以为源码文件指定不同的编码。需要强调的是,Python中容易出现乱码的问题,此时可以通过显式指定编码类型的方式来解决。312.2 Python的标识符和保留字9Python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字,标识符可以包含字母、数字及下划线(_),但是必须以一个非数字字符开始。字母仅仅包括IS
14、O-Latin字符集中的AZ和az。标识符对大小写敏感,因此 FOO和foo是两个不同的对象。特殊符号,如$、%、等,不能用在标识符中。另外,如if,else,for 等单词是保留字,也不能将其用作标识符。322.2 Python的标识符和保留字32保留字说 明and用于表达式运算,逻辑与操作as用于类型转换assert断言,用于判断变量或条件表达式的值是否为真break中断循环语句的执行class用于定义类continue继续执行下一次循环def用于定义函数或方法del删除变量或序列的值 332.2 Python的标识符和保留字33elif条件语句,与if,else结合使用else条件语句,
15、与if,elif结合使用,也可用于异常和循环语句exceptexcept包含捕获异常后的操作代码块,与try,finally结合使用exec用于执行python 语句forfor循环语句finally用于异常语句,出现异常后,始终要执行finally包含的代码块,与try,except结合使用 342.2 Python的标识符和保留字34from用于导入模块,与import结合使用globe定义全局变量if条件语句,与else,elif结合使用import用于导入模块,与from结合使用in判断变量是否在序列中is判断变量是否为某个类的实例lambda定义匿名变量not用于表达式运算,逻辑非操
16、作 352.2 Python的标识符和保留字35or用于表达式运算,逻辑或操作pass空的类,方法,函数的占位符print打印语句raise异常抛出操作return用于从函数返回计算结果trytry包含可能会出现异常的语句,与except,finally结合使用whilewhile的循环语句with简化python的语句yield用于从函数依此返回值 362.3 Python的注释的注释36Python中单行注释以#开头Python中多行注释:使用多个#号使用一对三个单引号()使用一对三个双引号()温馨提示:Python中针对引号的使用区分得不严格,比如表示字符串的时候,可以使用单引号,也可以
17、使用双引号。但需要注意的是,单引号和双引号必须成对出现,不能混合使用,不能一半是单引号,另一半却是双引号。372.4 行与缩进行与缩进37Python最具特色的就是使用缩进来表示代码块,而不是使用大括号。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。通常建议用一个Tab键表示一级代码块。382.5 Python中多行语句的表示中多行语句的表示38Python 通常是一行写完一条语句,但如果语句很长,可以使用反斜杠()来实现多行语句。在,或()中的多行语句,则不需要使用反斜杠()如:total=num_one+num_two+num_threetotal=num_one,
18、num_two,num_three,num_four,num_five 392.6 Python中模块的引用中模块的引用39在 python 用 import 或者 from.import 来导入相应的模块(也叫做包或者库)。具体的方法可以有以下几种形式:将整个模块(somemodule)导入:import somemodule从某个模块中导入某个函数:from somemodule import somefunction从某个模块中导入多个函数:from somemodule import firstfunc,secondfunc将某个模块中的全部函数导入:from somemodule i
19、mport*求是 明德 卓越变量与基本数据类型三 413.1 变量41Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。不需要为变量指定类型,默认会把第一次为变量赋值的类型作为变量类型。可以使用等号(=)来给变量赋值。等号运算符左边是一个变量名,右边是存储在变量中的值。可以同时为多个变量赋值。可以为多个对象指定多个变量。423.2 标准数据类型42Python3 中有六个标准的数据类型,分别是:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)和Dictionary(字典)。其中不可变的数据类型有三个,分
20、别是Number、String和Tuple。可变的数据类型也有三个:List、Dictionary、Set。下面将依次介绍这六种数据类型。433.2 标准数据类型43Number(数字)Python3支持四种数字类型,分别是int(整型)、float(浮点型)、bool(布尔类型)以及complex(复数类型)。在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 long。复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型,比如1+2j、1.1+2.2j。Python内置的 type()函数可以用
21、来查询变量所指的对象类型。还可以用 isinstance 来判断某个变量是否为指定的类型。数值的除法包含两个运算符:/返回一个浮点数,/返回一个整数。在混合计算时,Python会把整型转换成为浮点数。443.2 标准数据类型44String(字符串)Python中的字符串用单引号 或双引号 括起来,同时使用反斜杠 转义特殊字符。字符串可以用下标进行截取(也叫切片),在数据分析中经常用到此操作。字符串还可以用加号+表示连接,用星号*表示复制当前字符串,与之结合的数字为复制的次数。Python 支持格式化字符串的输出,字符串格式化使用与 C 中 sprintf 函数类似的语法。比如print(我叫
22、%s 今年%d 岁!%(小明,10)的输出为:我叫 小明 今年 10 岁!。反斜杠可以用来转义,使用r可以让反斜杠不发生转义。反斜杠还可以作为续行符,表示下一行是上一行的延续。Python 没有单独的字符类型,一个字符就是长度为1的字符串。Python中的字符串不能改变,向一个索引位置赋值会导致错误。453.2 标准数据类型45List(列表)List(列表)是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(即支持列表嵌套)。列表是写在方括号 之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以
23、被索引和截取(也叫切片),列表被截取后返回一个包含所需元素的新列表。列表的索引和截取方式和字符串类似,同样也是前闭后开的栅栏式截取,索引值以 0 为开始值,-1 为从末尾的开始位置。列表同样支持用加号+表示连接,用星号*表示重复。463.2 标准数据类型46列表索引示意列表索引示意 473.2 标准数据类型47函数描述len(list)列表元素个数max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)将元组转换为列表列表的函数列表的函数 483.2 标准数据类型48列表的列表的方法方法方法描述list.append(obj)在列表末尾添加新的对象list.c
24、ount(obj)统计某个元素在列表中出现的次数list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)从列表中找出某个值第一个匹配项的索引位置list.insert(index,obj)将对象插入列表 493.2 标准数据类型49列表的列表的方法方法list.pop(index=-1)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj)移除列表中某个值的第一个匹配项list.reverse()反向列表中元素list.sort(key=None,reverse=False)对原列表进
25、行排序list.clear()清空列表list.copy()复制列表 503.2 标准数据类型50Tuple(元组)Python中的Tuple(元组)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开,元组中的元素类也可以不相同。元组中的元素类型也可以不相同。元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。元组也可以进行截取,方式和字符串以及列表相似。虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。513.2 标准数据类型51Set(集合)集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对
26、象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 或者 set()函数创建集合。温馨提示:创建一个空集合必须用 set()而不是 ,因为 是用来创建一个空字典的。523.2 标准数据类型52方法描述add()为集合添加元素clear()移除集合中的所有元素copy()拷贝一个集合difference()返回多个集合的差集difference_update()移除集合中的元素,该元素在指定的集合也存在discard()删除集合中指定的元素intersection()返回集合的交集intersection_update()删除此集合中不存在于其他指定集合中的项目集合的内
27、置函数清单集合的内置函数清单 533.2 标准数据类型53集合的内置函数清单集合的内置函数清单isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 Falseissubset()判断指定集合是否为该方法参数集合的子集issuperset()判断该方法的参数集合是否为指定集合的子集pop()随机移除元素remove()移除指定元素 543.2 标准数据类型54集合的内置函数清单集合的内置函数清单symmetric_difference()返回两个集合中不重复的元素集合symmetric_difference_update()移除当前集合中在另外一个指定集合相同
28、的元素,并将另外一个指定集合中不同的元素插入到当前集合中union()返回两个集合的并集update()用此集合和其他集合的并集来更新集合 553.2 标准数据类型55Dictionary(字典)字典(dictionary)是Python中另一个非常有用的内置数据类型。字典是一种映射类型,字典用 标识,它是一个无序的 键(key):值(value)的集合。键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。563.2 标准数据类型56温馨提示:列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于,字典当中的元素是通过键来存取的,而不是通过偏移存取。类型。字典中不
29、允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会覆盖前一个值。字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键必须使用不可变类型。因此,键所以可以用数字,字符串或元组充当,而用列表就不行。573.2 标准数据类型57字典的函数字典的函数函数描述len(dict)计算字典元素个数,即键的总数。str(dict)输出字典,以可打印的字符串表示。type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。583.2 标准数据类型58字典的方法字典的方法方法描述radiansdict.clear()删除字典内所有元素radiansdi
30、ct.copy()返回一个字典的浅复制radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值radiansdict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值key in dict如果键在字典dict里返回true,否则返回falseradiansdict.items()以列表返回可遍历的(键,值)元组数组radiansdict.keys()返回一个迭代器,可以使用 list()来转换为列表 593.2 标准数据类型59字典的方法字典的方法radiansdict.setdefa
31、ult(key,default=None)和get()类似,但如果键不存在于字典中,将会添加键并将值设为defaultradiansdict.update(dict2)把字典dict2的键/值对更新到dict里radiansdict.values()返回一个迭代器,可以使用 list()来转换为列表pop(key,default)删除字典给定 key 所对应的值,返回值为被删除的值。key值必须给出。若key不存在,返回default值。popitem()随机返回并删除字典中的最后一对键和值。603.2 标准数据类型60Python中的数据类型转换数据类型转换函数清单数据类型转换函数清单函数描
32、述int(x,base)将x转换为一个整数float(x)将x转换到一个浮点数complex(real,imag)创建一个复数str(x)将对象 x 转换为字符串repr(x)将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)将序列 s 转换为一个元组 613.2 标准数据类型61数据类型转换函数清单数据类型转换函数清单list(s)将序列 s 转换为一个列表set(s)转换为可变集合dict(d)创建一个字典。d 必须是一个(key,value)元组序列。frozenset(s)转换为不可变集合chr(x)将一个整数转换
33、为一个字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串求是 明德 卓越流程控制四 634.1 条件语句63Python中的条件控制语句和其他语言的类似,是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块,包括了if、ifelse和ifelifelse等几种形式。温馨提示:Python 中用 elif 代替了 else if,所以if语句的关键字为:ifelifelse。每个条件后面要使用冒号:表示接下来是满足条件后要执行的语句块。使用缩进来划分语句块,相同缩进数的语句在一起组成一个语
34、句块。在Python中没有switchcase语句。644.2 循环语句64while循环语句while expression:suite_to_repeat其中,expression时候一个条件表达式,当expression值为True时执行suite_to_repeat代码块。for循环语句for iter_var in iterable_object:suite_to_repeatfor循环可以明确循环的次数,可以用来实现遍历一个数据集内的成员,通常在列表解析中使用或者生成器表达式中使用,其中iterable_object表示可迭代的数据类型,比如String、List、Tuple、Di
35、ctionary甚至是File。654.2 循环语句65Python中有一个range()函数通常和for循环一起使用,range()函数主要用来产生一组数列,它的语法可以有下面三种形式:range(start,end,step=1)range(start,end)range(end)其中start表示起始值,end表示终止值,step表示步长。需要特别强调的是,在使用range函数的时候,range函数产生的数列是包括起始值但不包括终止值的,和之前列表的截取类似,也是一种前闭后开的栅栏式索引方法。另外缺省的步长值为1。664.2 循环语句66循环中的break,continue和elsePy
36、thon中的break和continue的含义和其他语言类似,break语句用于终止当前循环,转而执行循环之后的语句。Continue语句用于停止当前轮次的循环,重新进入下一轮循环(如果循环条件还满足的话)。Python的循环还支持else语句,如果循环代码从break处终止,则会跳出循环,如果正常结束循环,则执行else中代码。求是 明德 卓越函数、模块和包五 685.1 函数68函数的定义和调用函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。函
37、数内容以冒号起始,并且缩进。return 表达式 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。函数定义好之后,就可以通过函数名对起进行调用了,调用方式是函数名加上一对小括号,括号之间是所有可选的参数,即使没有参数,小括号也不能省略。695.1 函数69函数的参数传递默认参数:函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,默认参数以赋值语句的形式提供。当调用的时候没有传入参数,则直接使用默认参数。需要注意的是,默认参数一般需要放置在参数列表的最后。关键字参数:关键字参数是让调用者通过使用参数名区分参数。允许改变参数列表中的参数顺序。传递函数:
38、函数可以像参数一样传递给另外一个函数。705.1 模块和包70模块的定义和使用模块是一个包含所有用户定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。如果想使用 Python 源文件编写的模块,只需在另一个源文件里执行 import 语句,将其导入即可。不管执行了多少次import,一个模块只会被导入一次。当使用import语句的时候,如果模块在当前的搜索路径就会被导入。Python中还可以使用from import 语句进行模块导入。from import 语句可以从模块中导入一个指定的部分到当前命名空间中。
39、715.2 模块编写的更多技巧71模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。所以,模块的作者可以放心大胆的在模块内部使用这些全局变量,而不用担心把其他用户的全局变量搞混淆。在模块中同样可以通过import导入其他模块。一个模块被另一个程序第一次引入时,其主程序将运行。如果希望在模块被引入时,模块中的某一程序块不执行,那么可以用_name_属性来使该程序块仅在该模块自身运行时执行。内置的函数 dir()可以找到模块内定义的所有名称。以一个字符串列表的形式
40、返回。如果没有给定参数,那么 dir()函数会罗列出当前定义的所有名称。725.3 包72包是一种管理 Python 模块命名空间的形式,采用点模块名称。比如一个模块的名称是 A.B,那么他表示一个包 A中的子模块 B。在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做 _init_.py 的文件才会被认作是一个包,主要是为了避免一些无效的名字(比如string)不小心影响搜索路径中的有效模块。最简单的情况,放一个空的:file:_init_.py就可以了。当然这个文件中也可以包含一些初始化代码。求是 明德 卓越异常处理六 74
41、6 异常处理74tryexcept在执行的时候,首先会执行 try 子句(在关键字 try 和关键字 except 之间的语句)。如果没有异常发生,则忽略 except 子句,try 子句执行后结束。如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。756 异常处理75类 名 描 述BaseException 所有异常的基类Exception 常规异常的基类AttributeError 对
42、象不存在此属性IndexError 序列中无此索引IOError 输入/输出操作失败KeyboardInterrupt 用户中断执行(通常输入Ctr-C)KeyError 映射中不存在此键NameError 找不到名字(变量)SyntaxError Python 语法错误TypeError 对类型无效的操作ValueError 传入无效的参数ZeroDivisionError 除(或取模)运算的第二个参数为0 766 异常处理76感谢聆听第一章第一章 概论概论西华大学西华大学数据分析基础与实践第三章 Python面向对象程序设计XXX学校XXXXXX20222022目录Contents面向对象
43、的基本概念类和对象属性和方法类的继承应用举例求是 明德 卓越面向对象的基本概念一 81 XXXXXXXXXXXXXXXXX1.1面向对象程序设计的基本思想面向对象程序设计的基本思想81 82 XXXXXXXXXXXXXXXXX1.1面向对象程序设计的基本思想面向对象程序设计的基本思想82活字印刷便是典型的面向对象的思想,在活字印刷术之前,要修改文章,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可再利用的价值,十分浪费。有了活字印刷之后:要对样章做出修改,只需要更改需要更换的字就可以了,这个特性叫做可维护。这些字并不是用完这次就再也没有别的地方可以用了,完全可以在
44、后来的印刷中重复使用,这个特性叫做可复用。这首诗如果需要增加字,只需要另外刻字加入就可以了,不需要推翻重来,这个特性是可扩展。字的排列其实有可能是竖排,也有可能是横排,这个时候只需要将活字移动就可做到满足排列需求,这个特性叫做灵活性好。在面向对象的编程思想中,需要考虑如何通过封装、继承和多态,把程序的耦合度降低(传统印刷术的问题就在于所有的字都刻在同一版面上,使其耦合度太高所制),需要利用恰当的设计模式使得程序更加的灵活,容易修改,并且易于复用,上述的所有问题都将变得轻松容易许多。83 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性面向对象程序设
45、计是一种程序设计范型,同时也是一种程序开发的方法。它将对象(对象指的是类的实例)作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。面向对象的基本思想是使用对象、类、继承、封装和消息等基本概念来进行程序设计。从现实世界中客观存在的事物出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。从理论上来讲,面向对象程序包括四个基本特征:抽象、封装、继承与派生、多态性。有时候也会把面向对象程序设计的基本特征描述为封装、继承和多态三个,因为抽象和封装可以理解为相似的概念,而继承和派生也是相对而言的。83 84 XXXXXXXXXXXXXXXXX1.2 面向对象程序设
46、计的基本特性面向对象程序设计的基本特性抽象为了更好的说明抽象的概念,先来讨论一个现实当中总是无法避免的东西数学。数学是一门抽象的学科,而抽象则正是数学的本质。在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所属的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。比如,对圆这一类对象的抽象:数据抽象半径radius,方法抽象求面积GetArea()。对一个问题可能有不同的抽象结果,这取决于程序员看问题的角度和解决问题的需求。可以说,在从真实世界到计算机虚拟
47、世界的转换过程中,抽象起了关键的作用。84 85 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性封装封装就是把对象的数据和方法结合成一个独立的单位,并尽可能隐蔽对象的内部细节。封装这一特性不仅大大提高了代码的易用性,而且还使得类的开发者可以方便地更换新的算法,这种变化不会影响使用类的外部代码。封装的作用包括:彻底消除了对传统结构方法中数据与操作分离所带来的种种问题,提高了程序的复用性和可维护性。把对象的私有数据和公共数据分离开来,保护了私有数据,减少了可能的模块间的干扰,达到了降低程序复杂性、提高可控性的目的。增强使用的安全性,使用者不必了解很多
48、实现细节,只需要通过设计者提供的外部接口来操作它。容易实现高度模块化,从而产生软件构件,利用构件快速地组装程序。具备这种“封装”的意识,是掌握面向对象分析与设计技巧的关键。85 86 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性继承和派生一个新类从已存在的类那里获得该类已有的特性叫作类的继承,已存在的类叫作父类,也叫作基类,产生的新类叫作子类或派生类。从一个已有的类那里产生一个新类的过程叫类的派生。已存在的类叫作父类,也叫作基类,产生的新类叫作派生类或子类。类的继承和派生是同一概念,前者是从子类的角度来说,后者是从父类的角度来说的。通常说子类继
49、承了父类,父类派生了子类。86 87 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性派生类是基类的具体化,基类是派生类的抽象。一个派生类的对象也是一个基类的对象,具有基类的一切属性和方法。派生类除了具有基类的一切属性和方法外,还可以有自己所特有的属性和方法。87 88 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性多态简单来说,多态是具有表现多种形态的能力的特征,在OO中是指,语言具有根据对象的类型以不同方式处理,特别是重载方法和继承类这种形式的能力。多态被认为是面向对象语言的必备特性。用一个比较抽
50、象的事物来取代具体的事物的表达方法,在面向对象软件中用“多态”这一特性来模拟。在编程中使用多态的方法,可以在代码中本应使用某一具体子类的地方使用较为抽象的基类对象,这种方法所带来的好处是多态的代码具有“变色龙”的特性,即在不同的条件下,同样代码可以完成不同的功能。88 89 XXXXXXXXXXXXXXXXX1.2 面向对象程序设计的基本特性面向对象程序设计的基本特性总体而言,面向对象程序设计思想和面向过程的程序设计思想可以简单做如下比较:面向过程的程序设计:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程