ʕ·͡ˑ·ཻʔ Daisy 🐾 ◟̆◞̆♥︎
Zou-Wang
点击头像关注

三っ•̀.̫•́)っ 我去宇宙了 ⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾

深浅拷贝

一、引言

在python中对象赋值实际上是对象的引用,当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个现象,而只是拷贝了这个对象的引用

二、拷贝

如果l2是l1的拷贝对象,则l1内部的任何数据 类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值表id不变

l1=['a','b','c',['d','e','f']]
l2=l1
l1.append('g')
print(l1)  ##['s','b','c',['d','e','f'],'g']
print(l2)   ##['s','b','c',['d','e','f'],'g']

三、浅拷贝

如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变

import copy
l1=['a','b','c',['d','e','f']]
l2=copy.copy(l1)
l1.append('g')
print(l1)   ##['a', 'b', 'c', ['d', 'e', 'f'], 'g']
print(l2)   ##['a', 'b', 'c', ['d', 'e', 'f']]
import copy
l1=['a','b','c',['d','e','f']]
l2=copy.copy(l1)
l1.append(['g','h','i'])
print(l1)   ##['a','b','c',['d','e','f'],['g','h','i']]
print(l2)   ##['a','b','c',['d','e','f'],['g','h','i']]

四、深拷贝

如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化

import copy
l1=['a','b','c',['d','e','f']]
l2=copy.deepcopy(l1)
l1.append('g')
print(l1)  ##['a','b','c',['d','e','f'],'g']
print(l2)  ##['a','b','c',['d','e','f']]
l3.append('g')
print(l1)   ##['a','b','c',['d','e','f'],'g']
print(l3)   ##['a','b','c',['d','e','f']]

异常处理

异常就是会报错

1、语法异常

if   #SyntaxError
0=1  #SyntaxError
##语法错误无法捕捉异常

2、逻辑异常

1/0
dic={}
print(dic['sjdfjg'])  #KeyError
try:
    num=input('输入一个值')
    dic={'0':'a'}
    print(dic[num])
    print(3)
    1/int(num)
    print(4)
except ZeroDivisionError as e:
    print('e:',e)
except KeyError as e:
    print('e:',e)

重点,以后捕获异常使用这个

print(1)
try:
    num=input('输入一个值')
    dic={'0':'a'}
    print(dic[num])
    print(3)
    print(4)
except Exception as e:
    print('e:',e)
finally:    ##最终的意思,无论报不报错都会打印
    print(3)

文件的读取

f=open(test.py)
ldata=f.read()
try:
    1/0
    print(data)
    #del f  只删掉了f,变量名,对操作系统的占用不会关闭
except Exception as e:
    print('e:',e)
finally:
    f.close()
    ##即删除f的引用,又会命令操作系统关闭对外存文件的占用

基本的文件处理

什么是文件:操作系统提供给用户的一个虚拟单位

文件有什么用:存储数据

打开文件的流程

1、打开文件路径
path=r'e:/python/day09/test.py'
2、双击打开
f=open(path,'w')
3、看文件
data=f.read()
print(data)
4、写文件
f.write('lzs nice')
5、关闭文件
f.close()
#del只删除了文件的引用以及文件在python内存中的占用,但是没有删除对操作系统的占用

posted @ 2019-08-12 16:32  没忘  阅读(117)  评论(0编辑  收藏  举报