Python学习手册(第二部分)
Posted xhjh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习手册(第二部分)相关的知识,希望对你有一定的参考价值。
第4章 介绍Python对象类型
Python的核心数据类型
第5章 数字
数字常量
- python2.6中的整数:一般整数(32位)和长整数(无穷精度),可以以l或L结尾强制其为长整数,当超过32位时会自动转换为长整数。
- python3.0中的整数:一个单独的类型,将一般整数和长整数合并了。
- 内置函数hex(I),oct(I)和bin(I)把一个整数转换为这3种进制表示的字符串,int(str,base)根据每个给定的进制把一个运行时字符串转换为一个整数。
- 复数:写成实部+虚部,虚部以j或J结尾,可通过内置函数complex(real,imag)来创建。
表达式操作符
- 在python3.0中移除了不相等<>。
- 在python2.6中,一个后引号表达式’X’和repr(X)的作用相同,转换对象以显示字符串,python3.0中删除了这个表达式,使用str和repr内置函数。
- 在python2.6和python3.0中,floor除法表达式(x//y)总是会把余数小数部分去掉,在python3.0中,x/y表达式执行真正的除法(保留余数)和python2.6中,的传统除法(截除为整数)。//操作符通常叫做截断除法,更准确的说法是floor除法,它把结果向下截断到它的下层最近的整数,对负数去最近的最小负数。可以通过math.trunc函数来得到浮点除法去除余数的结果。
- 在python2.X中,混合类型的广义比较是允许的(把数字转换为一个普通类型,并且根据类型名称来排列其他的混合类型)。在python3.0中,非数字的混合类型的大小比较是不允许的,并且会引发异常,这包括按照代理排序。在python3.0中,对字典的大小比较也不支持(支持相等性测试),比较sorted(dict.items())是一种可能的替代。
第6章 动态类型简介
变量、对象和引用
- 类型是与对象相关联的,而不是和变量关联。变量名只是引用对象而已。
- 检查是否相等的两种方法:“==”操纵符,测试两个被引用的对象是否有相同的值。“is”操纵符,检查对象的同一性,即比较实现引用的指针,如果两个变量名精确地指向同一个对象,则返回True。不过,对小的整数和字符串会被缓存并复用,所以is有时检查会为True。
第7章 字符串
- python3.0中,有3种字符串类型:str用于Unicode文本,bytes用于二进制数据,bytearray是bytes的一种可变的变体。python2.6中,unicode字符串表示Unicode文本,str字符串处理8位文本和二进制数据,bytearray在2.6及以后的版本可以用。
2. raw字符串抑制转义,一个raw字符串也不能以单个的反斜杠结尾,因为,反斜杠会转义后续引用的字符,一个raw字符串不能以奇数个反斜杠结束。
3. S[:]获取从偏移0到末尾之间的元素,这有效地实现顶层S拷贝,X[i:j:k]表示索引X对象中的元素,从偏移为i直到偏移为j-1,每隔k元素索引一次,k默认为1,k为负数表示反方向步进。
4. 字符串转换工具:int(s)函数将字符串s转换为数字,str(i)函数将数字i转换为字符串,repr(i)函数将一个对象转换位字符串形式。对于字符串来说,如果使用print语句进行显示的话,其结果需用引号括起来。
5. 字符串代码转换:ord('s')函数将字符转换成ASCII码,这个函数实际上是返回字符在内存中的对应的二进制值,chr(i)函数将执行相反的操作。
字符串格式化表达式
格式化字符串:
1)在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入 转换目标,都以%开头。
2)在%操作符右侧放置一个(或对个,嵌入到元组中)对象,这些对象将会插入到左侧想让Python进行格式化字符串的一个(或多个)转换目标的位置上。
转换目标的通用结果为:
%[(name)][flags][width][.precision]typecode
在%和字符码之间,可以进行的操作为:放置一个字典的键,罗列出左对齐(-)、正负号(+)和补零(0)的标志位。给出数字的整体长度和小数点后的位数等。width和precision都可以编码为一个*,以指定它们应该从输入值的下一项取值,当前项的值作为width或precision的值。
基于字典的字符串格式化:字符串的格式化允许左边的转换目标来引用右边字典中的键来提取对应的值。
"%(n)d %(x)s" % "n":1, "x":"spam"
字符串格式化调用方法format
format方法使用主体字符串作为模板,并且接受任意多个表示将要根据模板替换的值得参数。在主体字符串中,花括号通过位置(例如,0,1…)或关键字指出替换目标及将要插入的参数。
'1, 0 and s'.format('spam','ham',s='eggs')
添加键、属性和偏移量
像%格式化表达式一样,格式化调用可以变得更复杂以支持更多高级用途。例如格式化可以指定对象属性和字典键。但是要指定负的偏移或分片,或者使用任意表达式,必须在格式化字符串自身之外运行表达式。
import sys
'my 1[spam] run 0.platform'.format(sys,'spam':'laptop')
添加具体格式化
和%表达式类似,替代目标出现的形式化结构:
fieldname|conversionflag:formatspec
其中:fieldname是指定参数的一个数字或关键字,后面跟着可选的”.name”或”[index]”成分引用。conversionflag可以是r、s或者a分别是在该值上对repr、str或ascii内置函数的一次调用。formatspec指定如何表示该值,包括字段宽度、对齐方式、补零、小数点精度等,并且以一个可选的数据类型编码结束,formatspec的组成形式为:
[[fill]align][sign][#][0][width][.precision][typecode]
align可能是<、>、=或^,分别表示左对齐、右对齐、一个标记字符后的补充或居中对齐。formatspec也包含嵌套的,只带有的格式化字符串,它从参数列表动态的获取值(和格式化表达式中的*很相似)
'0.platform:>10 = 1[item]:10'.format(sys,dict(item='laptop'))
第8章 列表与字典
列表
sort方法可以通过传入关键字参数来修改排序行为,key参数给出一个单个参数的函数,返回在排序中的使用的值,reverse参数允许排序按照降序而不是默认升序。extend和pop方法分别在末端插入多个元素,删除一个元素。pop方法能够接受一个即将被删除并返回的元素的偏移(默认值为最后一个元素)。remove方法通过值删除元素。
在python3.0中,字典的keys、values和items都返回视图对象,想要应用列表操作或者显示它们的值则必须通过内置函数list,而在python2.6中返回的是列表。
在python2.6中可以直接用<、>等比较字典,但是python3.0不再有效,但是,可以通过手动比较排序后的键列表来模拟。
第8章 元组,文件及其他
列表
文件
open函数的第二个参数为处理模式:’r’代表输入打开文件(默认值),’w’代表输出生成并打开文件,’a’代表为文件尾部追加内容而打开文件,’b’表示进行二进制数据处理,’+’表示同时为输入和输出打开文件。第三个参数为可选参数,用来控制输出缓存,0表示输出无缓存
用pickle存储python的原生对象
pickle模块是能够直接在文件中存储几乎任何python对象的高级工具。
F=open('datafile.pkl','wb')
import pickle
pickle.dump(D,F)
F.close()
F=open('datafile.pkl','rb')
E=pickle.load(F)
文件中打包二进制数据的存储与解析
struct模块能够构造并解析打包的二进制数据。
F=open('data.bin','wb')
import struct
data = struct.pack('>i4sh',7,'spam',8)
F.write(data)
F.close()
F=open('data.bin','rb')
data=F.read()
values=struct.unpack('>i4sh',data)
拷贝的方法:
- 没有限制条件的分片表达式(L[:])能够复制序列
- 字典copy方法(X.copy())能够复制字典。
- 有些内置函数(如:list)能够生产拷贝(list(L))。
- copy标准库模块能够生成完整拷贝。
注意:无条件值的分片以及字典copy方法只能做顶层复制,即,不能够复制嵌套的数据结构。如果需要深层嵌套的数据结构的完整的,完全独立的拷贝,则需要使用标准的copy模块——包括import copy语句,并编辑X=copy.deepcopy(Y)对任意嵌套对象Y做完整的复制。
以上是关于Python学习手册(第二部分)的主要内容,如果未能解决你的问题,请参考以下文章
Python 学习之《Learn Python3 The Hard Way 》第二部分学习笔记