




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python语言程序设计PythonLanguageProgramming9模块和面向对象模块Python模块模块化架构包的管理库的引用面向对象面向对象的概念类与实例面向对象的特征模块Python模块模块化架构包的管理库的引用python的标准库模块类型名称描述文本String通用字符串操作Re正则表达式操作二进制数据Struct将字节解析为打包的二进制数据Codecs注册表与基类的编解码器数据类型Datatime基于日期和时间工具Calendar通用月份函数Types浅拷贝与深拷贝数学Math数学常用函数Cmath复数数学函数Random生成伪随机数表9.1Python常用模块举例模块化架构
顶层文件a.py模块b.py模块c.py库模块图9-1Python程序架构包的组成Python程序一般由三部分组成:包(package)、模块(module)和函数(function)。其中包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合模块1函数类模块2函数类模块n函数类……包图9-2包、模块和和函数之间的关系python包管理图9-3Python包管理python包管理4种包管理工具:distutilsdistutils是Python标准库的一部分,最初为开发者提供一种方便的打开方式,同时也为使用者提供了方便的包安装方式。setuptoolssetuptools是对distutils的增强,引入了包依赖管理。setuptools可以为Python包创建egg文件,Python与egg文件的关系,相当于java与jar包的关系。setuptools提供的easy_install脚本可以用来安装egg包。python包管理4种包管理工具:easy_installeasy_install是由PEAK(PythonEnterpriseApplicationKit)开发的setuptools包里带的一个命令,所以使用easy_install实际上是在调用setuptools来完成安装模块的工作。easy_install可以自动从PyPI[/pypi](第三方库)上下载相关的包,并完成安装,升级。pippip是安装管理Python包的标准工具,2008年发布,它是对easy_install的一种增强,也是其替代品,但它仍有大量的功能建立在setuptools组件之上。同样可以从PyPI上自动下载安装包。在pip中,安装所需要的包都要先下载,所以不会出现安装了一部分,另一部分没有安装的情况,且所有的安装包都会被跟踪。python包管理2种包格式:EggsEggs格式是setuptools引入的一种文件格式,它使用.egg作为扩展名,用于Python第三方库的安装。setuptools可以识别这种格式,并解析和安装它。pip支持eggs,但希望不再使用它。WheelWheel本质上是一个zip包格式,它使用.whl扩展名,用于Python第三方库的安装,它的出现是为了替代Eggs。Wheel和eggs格式的具体区别,请参见官方文档/。python库的安装pip一般高版本的Python的在安装过程中会自动设置环境变量,且自带pip的安装若无,进行手动设置环境变量的操作右键【计算机】,选择【属性】在左侧栏找到【高级系统设置】打开命令行,输入python,出现以下提示即为配置成功。点击【环境变量】在系统变量中找到Path,双击。在字符串的末尾加一个“;”,再输入Python的安装路径,一路点击【确定】,直到设置完成。打开命令行,输入python,检验是否配置成功。python库的安装wheelwheel的安装Python第三方库官网[/pypi]中下载将下载好的文件移入Python安装目录中scripts文件夹中打开命令行,进入scripts文件夹,输入命令pipinstallpandas-0.18.1-cp35-cp35m-win_amd64.whl,【Enter】键入python库的安装exe文件exe的安装有些Python的第三方库可以直接下载到.exe类型的可安装文件,如pyparsing库。在PyPI官网上搜索pyparsing,下载列表见下图,我们只需选择相应的版本下载安装包后,双击,按照安装提示步骤安装即可。图9-4pyparsing库可下载的安装文件列表库的引用Python中的库主要分为三大类,一类是标准模块,第二类是第三方模块,第三类是自定义模块。无论是第三方库还是标准库以及我们自定义的库,在使用之前都需要进行导入。导入方法import方式from方式import方式importmodname1importmodname2……importmodnameN也可以在一行内导入多个模块:importmodname1[,modname2[,…modnameN]](这样书写的代码可读性较差,不推荐)注1、如果import语句是在代码的顶层,则它的作用域为全局;如果import语句在某个函数中,则它的作用域仅局限于该函数。2、如果import语句是在代码的顶层,则它的作用域为全局;如果import语句在某个函数中,则它的作用域仅局限于该函数。from方式fromturtleimportPent=Pen()
注
1、代码的第一行导入了turtle模块中的Pen函数,第二行调用Pen()函数时,不需要再在函数前面加模块的名称,不会报错。2、也可以把一个模块中的所有名称(包括函数的、方法的、属性的等等)都导入到当前命名空间中:
frommodnameimport*
但是在实际编码中,很可能导入进来的名称会覆盖掉当前命名空间中已有的名称,因此不推荐面向对象面向对象的概念类与实例面向对象的特征面向对象的概念类(class):对具有相同数据和方法的一组对象的描述或定义。对象(object):对象是一个类的实例。实例(instance):一个对象的实例化实现。标识(identity):每个对象的实例都需要一个可以唯一标识这个实例的标记。实例属性(instanceattribute):一个对象就是一组属性的集合。实例方法(instancemethod):所有存取或者更新对象某个实例一条或者多条属性的函数的集合。类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化类方法(classmethod):那些无须特定的对性实例就能够工作的从属于类的函数。类与实例创建类和子类增加属于类的实例
classanimals: passclassmammals(animals): passclassdog(mammals): passBob=dog()类与实例用函数表示类的特征classanimals:defbreath(self): print(‘breathing’)classmammals(animals):defmove(self): print(‘moving’)classdog(mammals):defeat(self): print(‘eatingfood’)Bob=dog()Bob.move()Bob.eat()运行结果是movingeatingfood面向对象的特征封装继承多态封装封装,即将抽象得到的数据和行为相结合,将基本类结构的细节隐藏起来,通过方法接口实现对实例变量的所有访问。Python中允许对类中的数据和方法进行封装。下面的例子封装了类中的数据,将公司名和Leader分别封装到对象obj1、obj2中self的companyname和leader属性中。classCompany:def__init__(self,companyname,leader):panyname=companynameself.leader=leaderif__name__=="__main__":obj1=Company("A","Kevin")obj2=Company("B","Jone")封装在调用数据时,可以使用两种方式:通过对象直接调用;通过self间接调用。如下面的例子:classCompany:def__init__(self,dept,leader):self.dept=deptself.leader=leader
defshow(self):printself.deptprintself.leader
if__name__=="__main__":obj1=Company("A","Kevin")obj2=Company("B","Jone")
#通过对象直接调用封装的数据printobj1.deptprintobj1.leader
#通过self来间接调用,self即为对象本身obj1.show()obj2.show()继承已经有一个类,另外还想再创建一个和已有类非常相似的类时,我们就用到继承在类上添加关联,使得位于下层的类可以“继承”位于关系上层的类的属性继承利于代码的复用性和规模化Python中的类还具有多继承的特性,即一个类可以有多个父类继承classScale:defcheck(self):ifself.count_person>500:print("%sisbigcompany."%)else:print("%sissmallcompany."%)
classCompany(Scale):def__init__(self,name,count):=nameself.count_person=count
if__name__=="__main__":my_company=Company("ABC",800)my_company.check()本例中,Company类只有Scale一个父类,当调用check()方法时,Company本身没有定义check方法,代码会向上自动检测父类Scale中是否存在check方法,结果在父类中找到该方法,此为单继承,即只有一个父类继承classScale:defcheck(self):ifself.count_person>500:return"%sisbigcompany."%else:return"%sissmallcompany."%
classDetail:defshow(self,scale):print("%s,Thiscompanyhas%spersons."%(scale,self.count_person))
classCompany(Scale,Detail):def__init__(self,name,count):=nameself.count_person=count
if__name__=="__main__":my_company=Company("ABC",800)company_scale=my_company.check()my_company.show(company_scale)本例中,类Company分别继承了类Scale和类Detail,可以调用父类中的check和show方法。这种继承的方法叫做多继承。多态多态,即多种状态。在事先不知道对象类型的情况下,可以自动根据对象的不同类型,执行相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60068-2-83:2025 EN-FR Environmental testing - Part 2-83: Tests - Test Tf: Solderability testing of electronic components for surface mounting devices (SMD) by the wettin
- 【正版授权】 IEC/IEEE 80005-1:2019/AMD1:2022 EN-FR Amendment 1 - Utility connections in port - Part 1: High voltage shore connection (HVSC) systems - General requirements
- 2025至2030中国甲硫氨酸甲磺酰氯行业产业运行态势及投资规划深度研究报告
- 2025至2030中国理发行业深度研究及发展前景投资评估分析
- 成人推拿培训课件
- 学习动力与教学效果的关联性研究
- 企业智慧交通系统解决方案的研究与实践
- 教育行业劳动法规定解读
- 儿童健康教育的全面普及与提高研究
- 企业与政府协作推动的智慧城市治理策略研究
- 物业经理接待日制度
- 数独教案-完整版
- 易制毒、易制爆化学品安全培训
- 后厨管理制度与章程内容
- 【人教版化学】选择性必修2 知识点默写小纸条(空白默写版)
- 情景与情境的区别与联系
- 公务员考试经验分享培训课件
- (高级)数据安全管理员职业技能鉴定考试题库-实操题
- 初三化学上册第一单元测试题(含答案)
- 移动通信网络优化服务合同
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
评论
0/150
提交评论