python核心编程第二版笔记.docx

上传人:b****6 文档编号:5862619 上传时间:2023-01-01 格式:DOCX 页数:61 大小:515.14KB
下载 相关 举报
python核心编程第二版笔记.docx_第1页
第1页 / 共61页
python核心编程第二版笔记.docx_第2页
第2页 / 共61页
python核心编程第二版笔记.docx_第3页
第3页 / 共61页
python核心编程第二版笔记.docx_第4页
第4页 / 共61页
python核心编程第二版笔记.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

python核心编程第二版笔记.docx

《python核心编程第二版笔记.docx》由会员分享,可在线阅读,更多相关《python核心编程第二版笔记.docx(61页珍藏版)》请在冰豆网上搜索。

python核心编程第二版笔记.docx

python核心编程第二版笔记

python核心编程--笔记(很详细,建议收藏)

解释器options:

1.1–d提供调试输出

1.2–O生成优化的字节码(生成.pyo文件)

1.3–S不导入site模块以在启动时查找python路径

1.4–v冗余输出(导入语句详细追踪)

1.5–mmod将一个模块以脚本形式运行

1.6–Qopt除法选项(参阅文档)

1.7–ccmd运行以命令行字符串心事提交的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,添加.

print>>logfile,“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>>和<<的移位运算也支持.但不支持java中的>>>和<<<移位.

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溢出,会自动转型为long

11.7python2.4开始支持decimal数字类型,需要导入decimal模块..由于在二进制表示中会有一个无限循环片段,普通的浮点1.1实际是不能被精确表示的,被表示为1.1000000000000001.使用printdecimal.Decimal(‘1.1’);则可以得到精确的1.1

12字符串:

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

]可以得到子字符串…字符串中第一个字符的索引是0,最后一个字符的索引是-1;

13列表和元组:

可以看作是普通的数组,能保存任意数量任意类型的python对象…

13.1列表元素用中括号包裹,元素的个数及元素的值可以改变.

13.2元组元素用小括号包裹,不可以更改,尽管他们的内容可以,元组可以看成是只读的列表.可以使用切片运算得到子集.

14字典:

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

value}的方式表示.取值的方式和其他语言的map一致.也可以直接使用map[key]=value的方式为其赋值.

 

15条件语句:

ifexpression:

path1

elifexpression2:

path2

else:

path3

16while循环

whileexpression:

processbusiness

17for循环

foriteminlist|tuple|map:

printitem

17.1range(len(list))得到一个list长度范围内的整数list,方便遍历过程中获取索引值.

17.2python2.3中增加了enumerate(),可以通过它遍历list,同时得到索引和值

forindex,datainenumerate(list):

printindex,“:

”,data,

17.3列表解析:

[expressionfortarget1initerable1[ifcondition1]

fortarget1initerable2[ifcondition2]

fortarget1initerable3[ifcondition3]

fortarget1initerable4[ifcondition4]

.............................................

fortargetNiniterableN[ifconditionN]]

1、列表解析的语法是借鉴函数式编程语言Haskell。

2、列表解析的语法形式:

表达式+for循环+in+可迭代的对象

[表达式foriteminiterable]

实例:

[x*2forxinxrange(10)]

>>>[x*2forxinxrange(10)]

[0,2,4,6,8,10,12,14,16,18]

3、列表解析的拓展形式:

结合if语言

[表达式foriteminiterableif条件表达式]

实例:

>>>[x*2forxinxrange(10)ifx%2!

=0]

[2,6,10,14,18]

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,默认是r

19异常处理:

raise可以故意引发异常

try:

#process

exceptIOError,e:

#errorprocess

20函数:

如果函数中没有return语句,自动返回None对象

deffunction_name([arguments]):

“optionaldocumentstring”

function_suite

20.1python的函数调用中参数是引用传递

20.2可以在定义函数的时候,在参数列表中通过=设置参数的默认值.

21类:

21.1定义:

classclass_name:

static_variable_name=value

def__init__(self,[arguments]):

//operation

//selfinhereisthereferenceforthisclassinstance

defgeneral_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_name

22.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/peps

24一些常用函数

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默认是1

24.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十六进制:

0xf2134

 

Python基础(chapter3)

1setenceandsyntax语句和语法

1.1#为注释符号

1.2\n是标准行分隔符,通常一个语句一行

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,x

4标识符

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,byTimPeters

python之禅.作者TimPeters

Beautifulisbetterthanugly.

漂亮胜于丑陋

Explicitisbetterthanimplicit.

详尽胜于含蓄

Simpleisbetterthancomplex.

简单胜于复杂

Complexisbetterthancomplicated.

组合胜于复杂(结构)

Flatisbetterthannested.

单一胜于嵌套

Sparseisbetterthandense.

稀少胜于繁杂

Readabilitycounts.

可读性价值

Specialcasesaren'tspecialenoughtobreaktherules.

特例不足以违反规则

Althoughpracticalitybeatspurity.

实践胜于理论

Errorsshouldneverpasssilently.

错误可能从不沉默

Unlessexplicitlysilenced.

除非明白沉默

Inthefaceofambiguity,refusethetemptationtoguess.

面对歧义,不被猜想诱惑

Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.

可能仅有一种更好的方法

Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.

Nowisbetterthannever.

现在胜于一切

Althoughneverisoftenbetterthan*right*now.

Iftheimplementationishardtoexplain,it'sabadidea.

难于解释的实现是不好的

Iftheimplementationiseasytoexplain,itmaybeagoodidea.

易于明白的实现可能是个好方案

Namespacesareonehonkinggreatidea--let'sdomoreofthose!

名空间是一个好方案,让我们去超越这些

6模块组织

#起始行

#模块文档

#模块导入

#变量定义

#类定义

#函数定义

#主程序

7__name__用于指示模块应该如何被加载,如果值是”__main__”说明是主模块,如果是模块名,说明是被导入的

8主模块测试代码

defmain():

#businessprocess

if(__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对象别名被显示销毁dely

9.3.2.3对象别名被赋予其他引用

9.3.2.4窗口对象本身被销毁

9.3.3del

9.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的时间计量bug

11.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))可以看出类型对象本身也是对象,它的类型是type

4.2None的类型是NoneType,NoneType只有一个值,就是None,不支持任何运算也没有任何内建方法,布尔值总返回False

5每个对象天生都有布尔值,以下对象的布尔值是False

5.1None

5.2False(bool类型)

5.3所有值为0的数

5.4‘’空字符串

5.5[]|()|{}空列表,空元组,空字典

5.6用户创建的实例如果定义了nonzero(__nonzero__())或length(__len__())且值为0,那么返回的布尔值也是False

6当要获取一个对象的布尔值的时候,首先会调用__nonzero__(必须返回布尔类型或者int类型.)方法,如果实现了该方法,就返回该方法返回的布尔值,如果没有实现该方法,继续调用__len__方法(该方法返回值必须是大于等于0的),如果实现了__len__方法,就根据其返回值返回布尔值.

7内部类型:

python内部机制

7.1代码:

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

7.2帧对象:

用于跟踪记录对象

7.3跟踪记录:

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

7.4切片:

7.4.1步进切片sequence[:

:

number]number为负数,倒序显示字符串,正数则正序显示字符串,数值代表显示字符的step值.

7.4.2多维切片sequence[start1:

end1,start2:

end2]

7.4.3省略切片sequence[…,start1:

end1]

7.4.4切片对象使用slice([start,]stop[,step])可以创建一个切片对象

7.5省略对象:

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

7.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,not

9标准类型内建函数

9.1cmp(obj1,obj2)比较obj1和obj2,根据比较结果返回整数i,i<0àobj1

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

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1