python学习笔记

速撸《python学习手册》--第9章-元组、文件及其他

2018-08-15  本文已影响0人  DamaoShao

元组

实际应用中的元组

为什么有了列表还需要元组

元组的概念就来自数据库的一行。元组的角色类似于其他言语中的常数声明,带遍着一种完整性。

元组可以看作是一种简单的对象组合,列表则是随着时间改变的一种数据结构。

元组可以用在列表无法使用的地方,比如字典的key。

文件

文件对象只是常见文件处理任务输出的模块。

使用文件

实际应用中的文件

In [211]: S='Spam'

In [212]: S
Out[212]: 'Spam'

In [213]: X,Y,Z=43,44,45

In [214]: D={'a':1,'b':2}

In [215]: L=[1,2,3]

In [216]: F=open('datafile.txt','w')

In [217]: F.write(S+'\n')
Out[217]: 5

In [218]: F.write('%s,%s,%s\n'%(X,Y,Z))
Out[218]: 9

In [219]: F.write(str(L)+'$'+str(D)+'\n')
Out[219]: 27

In [220]: F.close()

In [221]: chars=open('datafile.txt').read()

In [222]: chars
Out[222]: "Spam\n43,44,45\n[1, 2, 3]${'a': 1, 'b': 2}\n"

In [223]: print(chars)
Spam
43,44,45
[1, 2, 3]${'a': 1, 'b': 2}


In [224]: F=open('datafile.txt')

In [225]: line=F.readline()

In [226]: line
Out[226]: 'Spam\n'

In [228]: line.rstrip()
Out[228]: 'Spam'

In [229]: line=F.readline()

In [230]: line
Out[230]: '43,44,45\n'

In [231]: parts=line.split(',')

In [232]: parts
Out[232]: ['43', '44', '45\n']

In [233]: int(parts[2])
Out[233]: 45

In [234]: numbers=[int(P) for P in parts]

In [235]: numbers
Out[235]: [43, 44, 45]

In [236]: line=F.readline()

In [237]: line
Out[237]: "[1, 2, 3]${'a': 1, 'b': 2}\n"

In [238]: parts=line.split('$')

In [239]: parts
Out[239]: ['[1, 2, 3]', "{'a': 1, 'b': 2}\n"]

In [240]: parts[0]
Out[240]: '[1, 2, 3]'

In [241]: eval(parts[0])
Out[241]: [1, 2, 3]

In [242]: objects=[eval(P) for P in parts]

In [243]: objects
Out[243]: [[1, 2, 3], {'a': 1, 'b': 2}]

使用pickle储存python原生对象

使用struct来存取二进制

文件的上下文管理器

即 with ... as

再看类型分类

对象灵活性

引用和拷贝

赋值操作总是储存对象的引用,而不是这些对象的拷贝。

浅拷贝:只复制了顶层

深拷贝:做了完整的复制

In [244]: import copy

In [245]: copy.deepcopy(S)

比较、相等性和真值

python中不通类型的比较方法:

python中真和假的含义

None

None 是一个特殊对象,总是假,起到一个空的占位作用。

None不是未定义的意思,因为他有自己的一块内存。

bool类型

可以用bool()来测试一个对象的布尔值。

type对象

类型本身在python中也是对象类型。

可以使用isinstance()来测试类型。

内置类型的陷阱

赋值生成引用,而不是拷贝

重复能够增加层次深度

In [246]: l=[4,5,6]

In [247]: x=l*4

In [250]: y=[l]*4

In [251]: y
Out[251]: [[4, 5, 6], [4, 5, 6], [4, 5, 6], [4, 5, 6]]

In [252]: l[1]=[0]

In [253]: x
Out[253]: [4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6]

In [254]: y
Out[254]: [[4, [0], 6], [4, [0], 6], [4, [0], 6], [4, [0], 6]]
上一篇下一篇

猜你喜欢

热点阅读