前言
在python中,有深拷贝和浅拷贝两种应用,其中应用的场景也各不相同:
1、需修改原有数据,则选择浅拷贝
2、需不修改原数据,则选择深拷贝
一、浅拷贝
浅拷贝,相当于python中的切片,应用如下:
import requests
def login(inData):
"""
param["nusername"]
param["passwd"]
通过切片赋值,相当于浅拷贝,修改了原来的值
"""
url = ""
param = inData["data"]
param["nusername"] = encrypt(param["nusername"])
param["passwd"] = encrypt(param["passwd"])
res = requests.post(url=url, json=param)
print(res.json())
inData = "./login_data.yaml"
login(inData)
说明:
将yaml文件里的data值取出来
再将data里面的字段重新赋值
这时yaml文件里的字段被更新,读出来的数据是更新后的
这种情况适用于修改值
二、深拷贝
深拷贝,是不影响原有数据,只是复制一个新的值出来操作,应用如下:
import copy
import requests
def login(inData):
"""
copy.deepcopy(param)深拷贝
"""
url = ""
param = inData["data"]
new = copy.deepcopy(param)
new["nusername"] = encrypt(new["nusername"])
new["passwd"] = encrypt(new["passwd"])
res = requests.post(url=url, json=new)
print(res.json())
inData = "./login_data.yaml"
login(inData)
说明:
将yaml文件里的data获取出来
复制一个一模一样的data出来,但是新复制出来的值操作后,对原来的data不影响
后面都只操作复制出来的新data,这样能保证yaml文件里的值不被修改,可以重复使用这份数据