python-day05

一.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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值