一.python对内存的使用
python-copy
浅拷贝和深拷贝(对程序运算的速度的影响)
—所谓浅拷贝就是对引用的拷贝(只拷贝父对象)
—所谓深拷贝就是对对象的资源的拷贝
1.数值变量赋值
a和b是两个对象,指向同一个空间。改变一个,另一个也会改变
>>> a=[1,2,3,'a','c']
>>> b=a
>>> b
[1, 2, 3, 'a', 'c']
>>> a
[1, 2, 3, 'a', 'c']
>>> id(a)
2239634233288
>>> id(b)
2239634233288#引用同一个对象
>>> a.append('d')
>>> a
[1, 2, 3, 'a', 'c', 'd']
>>> b
[1, 2, 3, 'a', 'c', 'd']
>>> b.append(4)
>>> b
[1, 2, 3, 'a', 'c', 'd', 4]
>>> a
[1, 2, 3, 'a', 'c', 'd', 4]
python中的深拷贝和浅拷贝
2.
—浅拷贝的内部数据的地址不变
如果改变内部数据的值,则两边都会变。原理如上图:
>>> import copy
>>> a=[1,2,3,['a','b','c']]
>>> b=a
>>> c=copy.copy(a)
>>> c
[1, 2, 3, ['a', 'b', 'c']]
>>> b
[1, 2, 3, ['a', 'b', 'c']]
>>> id(a)
2165633013832
>>> id(b)
2165633013832
>>> id(c)#c有自己独立的地址空间,所以c不会随着a的发改变而改变。(此处的父对象是不一样的,所以修改一个值,另一个值不会改变)
2165633657800
>>> a.append('d')
>>> a
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> b
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> c
[1, 2, 3, ['a', 'b', 'c']]
>>> id(a[0])
1854795568
>>> id(b[0])
1854795568
>>> a[3].append('d')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd']]
>>> b
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
深拷贝:彻底改变
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> d=copy.deepcopy(a)
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> id(a)
2165633013832
>>> id(d)
2165633655432#此处不一样
>>> id(a[0])
1854795568
>>> id(d[0])
1854795568
>>> id(a[3])
2165633084680
>>> id(d[3])#此处的内部元素不一样
2165587065160
>>> a.append('e')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> #此处不影响
>>> a[3].append('x')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd', 'x'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
二.文件与目录
文件和目录
文件的打开和创建
文件的读取
文件写入
内容查找和替换
文件删除,复制,重命名
目录操作
案列:
-------目录分析器
-------杀毒软件
-------系统垃圾清理工具
1.文件的读写
——-python进行文件读写的函数:open函数或file(类)#(python3不可以用file打开文件)
——-file_handler=(open(filename,,mode))
>>> fo=open('G:/Python/workspace/day04/python.txt')
>>> fo
<_io.TextIOWrapper name='G:/Python/workspace/day04/python.txt' mode='r' encoding='cp936'>#表示读的方式
>>> fo.read()#读
'jiabbckjdbc\nskkdnckd\nmcdknckd'
>>> fo.close()#关闭
r+的形式写入
有区别(先读出来,再写入和直接写入:两个操作写入的字符位置不一样)
前者放在文件中是文件的尾部,而后者是文件的首位置。
原因:文件中的数据read()
>>> f1=open('G:/Python/workspace/day04/python1.txt','r+')
>>> f1.read()
'hello \nin am new'
>>> f1.write('sidbdid')
7
>>> f1.close()
>>> f1=open('G:/Python/workspace/day04/python1.txt','r+')
>>> f1.write('aaaaaaa')
7
>>> f1.close()
写入w
write()写入的是缓存,只有关闭才能写进文件中
>>> f1=open('G:/Python/workspace/day04/python1.txt','w')
>>> f1.write('hello \nin am new')
16
>>> f1.close()