Python非常详细编程笔记.pdf

上传人:wj 文档编号:3438178 上传时间:2023-05-05 格式:PDF 页数:61 大小:1.89MB
下载 相关 举报
Python非常详细编程笔记.pdf_第1页
第1页 / 共61页
Python非常详细编程笔记.pdf_第2页
第2页 / 共61页
Python非常详细编程笔记.pdf_第3页
第3页 / 共61页
Python非常详细编程笔记.pdf_第4页
第4页 / 共61页
Python非常详细编程笔记.pdf_第5页
第5页 / 共61页
Python非常详细编程笔记.pdf_第6页
第6页 / 共61页
Python非常详细编程笔记.pdf_第7页
第7页 / 共61页
Python非常详细编程笔记.pdf_第8页
第8页 / 共61页
Python非常详细编程笔记.pdf_第9页
第9页 / 共61页
Python非常详细编程笔记.pdf_第10页
第10页 / 共61页
Python非常详细编程笔记.pdf_第11页
第11页 / 共61页
Python非常详细编程笔记.pdf_第12页
第12页 / 共61页
Python非常详细编程笔记.pdf_第13页
第13页 / 共61页
Python非常详细编程笔记.pdf_第14页
第14页 / 共61页
Python非常详细编程笔记.pdf_第15页
第15页 / 共61页
Python非常详细编程笔记.pdf_第16页
第16页 / 共61页
Python非常详细编程笔记.pdf_第17页
第17页 / 共61页
Python非常详细编程笔记.pdf_第18页
第18页 / 共61页
Python非常详细编程笔记.pdf_第19页
第19页 / 共61页
Python非常详细编程笔记.pdf_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Python非常详细编程笔记.pdf

《Python非常详细编程笔记.pdf》由会员分享,可在线阅读,更多相关《Python非常详细编程笔记.pdf(61页珍藏版)》请在冰点文库上搜索。

Python非常详细编程笔记.pdf

1基本配置及基础语法基本配置及基础语法(1,2章章)1Python.exe的解释器options:

1.1d提供调试输出1.2O生成优化的字节码(生成.pyo文件)1.3S不导入site模块以在启动时查找python路径1.4v冗余输出(导入语句详细追踪)1.5mmod将一个模块以脚本形式运行1.6Qopt除法选项(参阅文档)1.7ccmd运行以命令行字符串心事提交的python脚本1.8file以给定的文件运行python脚本2_在解释器中表示最后一个表达式的值.3print支持类c的printf格式化输出:

print“%sisnumber%d!

”%(“python”,1)4print的输入内容后面加逗号,就会使其输入不换行5把输出重定向到日志文件:

logfile=open(“c:

/1.log”,“a”);/打开文件c:

/1.log使用a模式.即add,添加.printlogfile,“Fatalerror:

invalidinput!

”;为重定向.将print的结果重定向到logfile,输出内容是”Fatalerror:

invalidinput!

”logfile.close();/关闭文件流6程序输入:

raw_input(“提示字符串”):

user=raw_input(“请输入您的姓名”);7int(数值).将数值字符串转换成整数值8运算符:

8.1+-*/%是和其他语言相同的加减乘及取模运算.取余运算8.2/在浮点取模中得到的结果是完整的浮点数8.3/在浮点取模中得到的结果是经过舍去运算的结果.8.4*是乘方8.5和和移位.8.6=+!

=等比较运算符8.7andornot等逻辑运算符9变量和赋值:

python是弱类型语言.10list,tuple,map*4得到的结果是一个新的list|tuple|map,是原数据的4份11数字:

11.1int(有符号整数)11.2long(长整数)11.3bool(布尔值)11.4float(浮点值)11.5complex(复数)11.6python2.3开始,如果结果从int溢出,会自动转型为long11.7python2.4开始支持decimal数字类型,需要导入decimal模块.由于在二进制表示中会有一个无限循环片段,普通的浮点1.1实际是不能被精确表示的,被表示为1.1000000000000001.使用printdecimal.Decimal(1.1);则可以得到精确的1.112字符串:

引号之间的字符集合,支持使用成对的单引号和双引号,三引号(三个连续单引号或双引号)可以用来包含特殊字符.使用索引运算符和切片运算符:

可以得到子字符串字符串中第一个字符的索引是0,最后一个字符的索引是-1;13列表和元组:

可以看作是普通的数组,能保存任意数量任意类型的python对象13.1列表元素用中括号包裹,元素的个数及元素的值可以改变.13.2元组元素用小括号包裹,不可以更改,尽管他们的内容可以,元组可以看成是只读的列表.可以使用切片运算得到子集.14字典:

相当于其他语言中的map,使用key:

value的方式表示.取值的方式和其他语言的map一致.也可以直接使用mapkey=value的方式为其赋值.15条件语句:

ifexpression:

path1elifexpression2:

path2else:

path316while循环whileexpression:

processbusiness17for循环foriteminlist|tuple|map:

printitem17.1range(len(list)得到一个list长度范围内的整数list,方便遍历过程中获取索引值.17.2python2.3中增加了enumerate(),可以通过它遍历list,同时得到索引和值forindex,datainenumerate(list):

printindex,“:

”,data,17.3列表解析:

sqdEvens=x*2forxinrange(8)ifnotx%2,获取一个序列,该序列是0-8的数字中所有x%2为0(false)的x的平方18文件和内建函数:

open(),file()18.1handle=open(file_name,access_mode=“r”),只读方式打开文件,得到的句柄是handle.该方法如果没有提供access_mode,默认是r19异常处理:

raise可以故意引发异常try:

#processexceptIOError,e:

#errorprocess20函数:

如果函数中没有return语句,自动返回None对象deffunction_name(arguments):

“optionaldocumentstring”function_suite20.1python的函数调用中参数是引用传递20.2可以在定义函数的时候,在参数列表中通过=设置参数的默认值.21类:

21.1定义:

classclass_name:

static_variable_name=valuedef_init_(self,arguments):

/operation/selfinhereisthereferenceforthisclassinstancedefgeneral_method_name(self,arguments):

/operation/selfistheclassinstance/ifyouwanttouseclassvariable,pleaseuselikeself._class_._name_21.2实例化:

instance=class_name(arguments,);22模块:

不带.py后缀名的文件名一个模块创建之后,可以使用import导入这个模块使用.22.1访问模块内的函数或变量:

module_name.function()|module_name.variable|module_name.class_name22.2sys模块概览22.2.1sys.stdout.write(HelloWorld!

n)/使用sys模块的标准输出22.2.2sys.platform/返回系统的标记22.2.3sys.version/返回系统的版本23PEP:

一个PEP就是一个python增强提案(pythonenhancementproposal),是在新版python中增加新特性的方式索引网址是:

http:

/python.org/dev/peps24一些常用函数24.1dir(obj)显示对象的属性,如果没有提供参数,显示全局变量的名字24.2help(obj)显示对象的文档,如果没有参数,进入交互式帮助24.3int(obj)将一个对象转换为整数24.4len(obj)返回对象的长度24.5open(file_name,mode)以mode(r|w|a)方式打开一个文件24.6range(start,stop,step)返回一个整数列表结束值是stop-1,step默认是124.7raw_input(str)提示str等待用户输入24.8str(obj)将一个对象转换为字符串24.9type(obj)返回对象的类型返回值本身是一个type对象24.10sum(iterable,start=0)可以对纯数值的list|tuple|map进行求和操作.24.11dir(object)如果没有参数获得当前脚本scope内定义的对象,如果有参数,返回该对象内部定义的对象,如果该对象有一个_dir_方法,该方法将被调用,并且必须返回属性的列表这就允许通过自定义_getattr_()或_getattribute_()方法的方式实现dir的自定义显示属性列表.如果没有指定参数,是根据该对象的_dict_内存字典的最佳聚合信息显示的.24.12type(object)参数为空显示,参数不为空显示该对象的类型24.13type(name,bases,dict)通过名称,基类,内存字典动态创建一个类型24.14object_name._doc_查看该对象的文档字符串24.15_doc_对象的文档字符串,该文档字符串在定义对象时写在对象语句块中第一句,使用单纯的字符串的方式表示24.16sys.exit()退出python解释器24.17append(Object)给list添加一个元素24.18os.linesep返回的是系统换行符不同的系统换行符是不同的,使用linesep可以提高代码跨平台性24.19string_variable_name.strip(chars)脱离,滤去字符串中的某些字符,如果没有参数返回原字符串25数值按进制分为:

25.1二进制:

0b10101025.2八进制:

0716725.3十进制:

9876725.4十六进制:

0xf2134Python基础基础(chapter3)1setenceandsyntax语句和语法1.1#为注释符号1.2n是标准行分隔符,通常一个语句一行1.3反斜线表示下一行继续,用来将单条语句放入多行尽量使用括号代替1.4分号;表示将两个语句连接在一行中不提倡1.5冒号:

表示将代码块的头和体分开1.6语句(代码块)用缩进块方式体现:

同一个代码组的代码必须严格左对齐.由于不同的editor制表符宽度不一,为了使代码跨平台,推荐使用4个空格缩进1.7不同缩进深度分隔不同的代码块1.8python文件以模块的形式组织:

模块以磁盘文件的形式存在,不应该让某个模块充斥的太大2赋值2.1赋值语句没有返回值,但可以使用链式赋值2.2python2.0开始支持增量赋值(算符和等号连接赋值),但是python不支持+,-2.3赋值操作中,可变对象会被直接修改(引用位置值的修改),不可变对象则被重新赋予新的对象(引用修改)2.4多元赋值:

a,b,c=1,2,string,建议使用tuple的方式进行多元赋值:

(a,b,c)=(1,2,string)3swap操作:

x,y=y,x4标识符4.1大小写敏感4.2python的关键字列表和iskeyword()函数在keyword模块,方便查阅4.3内建:

built-in可以看作是系统保留字.对于一些内建函数需要覆盖(重定义,替换)built-in是_builtins_模块的成员,该模块由解释器自动导入4.4python不支持重载4.5下划线:

作为变量前缀和后缀指定特殊变量4.5.1_xxx:

不用frommoduleimport*导入4.5.2_xxx_:

系统定义名字4.5.3_xxx:

类中的私有变量名5python之禅TheZenofPython,byTimPeterspython之禅.作者TimPetersBeautifulisbetterthanugly.漂亮胜于丑陋Explicitisbetterthanimplicit.详尽胜于含蓄Simpleisbetterthancomplex.简单胜于复杂Complexisbetterthancomplicated.组合胜于复杂(结构)Flatisbetterthannested.单一胜于嵌套Sparseisbetterthandense.稀少胜于繁杂Readabilitycounts.可读性价值Specialcasesarentspecialenoughtobreaktherules.特例不足以违反规则Althoughpracticalitybeatspurity.实践胜于理论Errorsshouldneverpasssilently.错误可能从不沉默Unlessexplicitlysilenced.除非明白沉默Inthefaceofambiguity,refusethetemptationtoguess.面对歧义,不被猜想诱惑Thereshouldbeone-andpreferablyonlyone-obviouswaytodoit.可能仅有一种更好的方法AlthoughthatwaymaynotbeobviousatfirstunlessyoureDutch.Nowisbetterthannever.现在胜于一切Althoughneverisoftenbetterthan*right*now.Iftheimplementationishardtoexplain,itsabadidea.难于解释的实现是不好的Iftheimplementationiseasytoexplain,itmaybeagoodidea.易于明白的实现可能是个好方案Namespacesareonehonkinggreatidea-letsdomoreofthose!

名空间是一个好方案,让我们去超越这些6模块组织#起始行#模块文档#模块导入#变量定义#类定义#函数定义#主程序7_name_用于指示模块应该如何被加载,如果值是”_main_”说明是主模块,如果是模块名,说明是被导入的8主模块测试代码defmain():

#businessprocessif(_name_=_main_)main()9内存管理9.1基本9.1.1弱类型动态类型9.1.2programmer不关心内存管理9.1.3变量并会被回收9.1.4del语句能够直接释放资源9.2变量未初始化不允许使用9.3引用计数:

对于一个内存堆中的对象,有多少个指针引用它.引用计数就是多少,引用计数为0时,该对象可以被垃圾回收器回收9.3.1增加9.3.1.1对象创建9.3.1.2别名创建(引用赋值)9.3.1.3参数传递(引用传值)9.3.1.4被容器引用9.3.2减少9.3.2.1引用生命周期结束9.3.2.2对象别名被显示销毁dely9.3.2.3对象别名被赋予其他引用9.3.2.4窗口对象本身被销毁9.3.3del9.3.3.1从现在的名字空间中删除一个别名9.3.3.2对象的引用计数减一9.4垃圾回收:

有对象引用计数为0,对象被显示告知需要销毁,有内存消耗大户存在导致系统压力较大时,垃圾回收机制运行,清理需要回收的内存区域垃圾回收机制还有一个循环垃圾回收器,确保释放循环引用对象(a引用b,b引用a,导致其引用计数永远不为0)10将引入的其他模块中常用的变量重新赋予一个本地别名(ls=os.linesep)不仅可以避免冗长的变量名,又可以提高加载速度(因为现在是本地变量了)11重要的其他模块11.1debugger:

pdb允许设置断点,逐行调试,检查堆栈,还支持事后调试11.2logger:

logging分紧急,错误,警告,信息,调试五级日志11.3profilers:

性能测试器11.3.1profile:

python编写,测试函数执行时间,每次脚本执行总时间.11.3.2hotshot:

python2.2,c编写,解决了性能测试过载问题,但需要更多时间生成结果,python2.5修正了hotshot的时间计量bug11.3.3cProfile:

python2.5,c编写,需要较长时间从日志文件载入分析结果,不支持子函数状态细节,某些结果不准python对象对象(chapter4)1python对象有三个特征:

身份和类型是只读的,如果对象支持不支持更新操作,那么值也就是只读的.1.1身份:

唯一的身份标识,可以使用内建函数id()得到,可以看作是对象的内存地址1.2类型:

对象的类型决定该对象保存什么类型的值,可以进行什么操作,遵循什么规则.,可以使用内建函数type()查看python对象的类型.1.3值:

对象表示的数据项2对象属性:

主要有属性,值,相关联的可执行代码(method),一些python类型也有数据属性,含有数据属性的对象包括但不限于:

类,类实例,模块,复数,文件.3基础数据类型:

数字,整形,布尔型,长整型,浮点型,复数型,字符串,列表,元组,字典.4其他内建类型:

类型,None,文件,集合/固定集合,函数/方法,模块,类4.1type(type

(1)可以看出类型对象本身也是对象,它的类型是type4.2None的类型是NoneType,NoneType只有一个值,就是None,不支持任何运算也没有任何内建方法,布尔值总返回False5每个对象天生都有布尔值,以下对象的布尔值是False5.1None5.2False(bool类型)5.3所有值为0的数5.4空字符串5.5|()|空列表,空元组,空字典5.6用户创建的实例如果定义了nonzero(_nonzero_()或length(_len_()且值为0,那么返回的布尔值也是False6当要获取一个对象的布尔值的时候,首先会调用_nonzero_(必须返回布尔类型或者int类型.)方法,如果实现了该方法,就返回该方法返回的布尔值,如果没有实现该方法,继续调用_len_方法(该方法返回值必须是大于等于0的),如果实现了_len_方法,就根据其返回值返回布尔值.7内部类型:

python内部机制7.1代码:

编译过的python的源代码片段,是可执行对象.通过调用内建函数compile()可以得到代码对象.代码对象可以被exec命令或eval()内建函数来执行.代码是用户自定义函数的核心,运行期获得上下文._code_是函数的一个属性,函数除了代码这个属性,还有函数名,文档字符串,默认参数,全局命名空间等必须的属性7.2帧对象:

用于跟踪记录对象7.3跟踪记录:

用于异常发生时,程序访问跟踪记录对象处理程序.7.4切片:

7.4.1步进切片sequence:

numbernumber为负数,倒序显示字符串,正数则正序显示字符串,数值代表显示字符的step值.7.4.2多维切片sequencestart1:

end1,start2:

end27.4.3省略切片sequence,start1:

end17.4.4切片对象使用slice(start,stop,step)可以创建一个切片对象7.5省略对象:

用于扩展切片语法,起记号作用.在切片语法中表示省略号,省略对象有一个唯一的名字Ellipsis,布尔值始终是True7.6Xrange:

调用xrange()生成Xrange对象,类似内建函数range,用于节省内存使用或range无法完成的超大数据集场合8标准类型运算符8.1对象值比较8.1.1数字根据大小比较8.1.2字符串根据字符先后顺序比较8.1.3list|tuple|dict顺序按照其中元素(dict按照键)比较8.1.4链式比较相当于多个比较使用and连接8.1.5自定义类型对象的比较是引用值比较,也就是id(object_name)的比较8.2对象身份比较8.2.1is/isnot用来比较两个别名是否引用同一个对象8.2.2整数对象和字符串对象是不可变对象8.3布尔类型运算符:

and,or,not9标准类型内建函数9.1cmp(obj1,obj2)比较obj1和obj2,根据比较结果返回整数i,i0obj10obj1obj2,i=0obj1=obj2.自定义类型中通过定义方法_cmp_(target)来实现.使用比较运算符,或直接调用cmp时该方法被调用9.2type(obj)得到一个对象的类型,返回相应的type对象9.3str(obj)返回对象适合可读性好的字符串表示在自定义类中使用_str_(self)返回一个字符串,调用str(obj)时会被隐式调用9.4repr(obj)返回一个对象的字符串表示,repr返回的字符串通常可以被用于使用eval动态创建一个对象.通常obj=eval(repr(obj)是成立的9.5,反单引号,obj和repr(obj)做的事情是一样的.9.6isinstance(obj,(type,type,)判断obj是不是第二个参数tuple中的列举的类型的实例9.7types模块提供一些已知的类型9.8由于每一种类型都只有一个类型对象,所以,可以使用引用比较代替值比较以提升性能:

用iftype(num)istypes.IntType替代iftype(num)=types.IntType9.9from-import:

只引入某个模块的一部分属性:

比如fromtypesimportIntType这样做可以有效的减少查询次数9.10python的operator模块中有绝大多数运算符对应的同功能的函数可供使用.10类型工厂函数:

int(),long(),float(),complex(),str(),Unicode(),basestring(),list(),tuple(),type(),dict(),bool(),set(),frozenset(),object(),classmethod(),staticmethod(),super(),property(),file()11标准类型的分类:

11.1标准类型是”基本内建数据对象原始类型”11.1.1基本:

是python的标准或核心11.1.2内建:

python默认提供11.1.3数据:

用于一般数据存储11.1.4对象:

对象是数据和功能的默认抽象11.1.5原始:

这些类型提供的是最底层的粒度数据存储11.1.6类型:

本身就是数据类型11.2按存储模型进行分类:

11.2.1标量/原子类型:

数值,字符串等可以存储单一字面对象的类型.11.2.2容器类型:

列表,元素,字典等可以存储多个字面变量的类型,python中的容器类型都可以存储不同类型的元素11.3按更新模型进行分类:

对象创建之后,值不可以改变,注意:

这里是对象,而不是变量11.3.1可变类型:

列表,字典11.3.2不可变类型:

数字,字符串,元组11.4按访问模型进行分类:

访问对象的方式11.4.1直接访问:

数值11.4.2顺序访问:

列表,元组,字符串等可以按照索引访问的类型11.4.3映射访问:

字典12不支持的类型:

char,byte,pointer数字数字(chapter5)1支持的数字类型:

整型,长整型,布尔型,双精度浮点型,十进制浮点型和复数2整型2.1布尔型包含True和False两个值的整型2.2标准整数类型0x表示十六进制,无前缀表示十进制,0表示八进制,0b表示二进制2.3长整型整数后加L,表示范围与可用内存大

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2