网站开发案例详解,广州网站建设 信科公司,石家庄抖音seo公司,wordpress获取当前分类id今天在写一段代码的时候#xff0c;需要对字典进行传值操作。一般情况下字典a 字典b#xff0c;意味着是传引用#xff0c;b发送改变的情况下a也会发生改变。我的字典如下a{testcase: {attributes: {classname: testdemo, circles: 2, casecode: case02, description: u/u6…今天在写一段代码的时候需要对字典进行传值操作。一般情况下字典a 字典b意味着是传引用b发送改变的情况下a也会发生改变。我的字典如下a{testcase: {attributes: {classname: testdemo, circles: 2, casecode: case02, description: u/u6d4b/u8bd5/u51c6/u590702}, value: [{step: {attributes: {stepid: 01, type: actor, method: prepareurl, description: u/u51c6/u5907/u670d/u52a1/u5668/u5730/u5740}, value: [{inputdata: {attributes: {value: http://10.249.128.122:8180/top/ecs/DayOnlineTimes.do?, key: url}, value: None}}]}}]}}调用代码如下import copycopy.deepcopy(a)结果在代码调试的时候老是报__cinit__() takes exactly 1 positional argument (0 given)神奇的是如果单独启动个python,把a字典赋值然后调用copy.deepcopy(a)是正常的但是如果在项目中使用就报如上错误看着python的这个提示真是让人丈二和尚摸不着头脑明明传了参数的为何报没有参数传递呢。如大家所知python报错机制比较乱的往往把子函数的错误在调度的地方直接抛出来。所以最后的办法只能直接debug还好copy模块的代码也是开源的一行一行debug.结果发现代码中有个地方如下cls type(x)而x是我传入字典的子对象{classname: testdemo, circles: 2, casecode: case02, description: u/u6d4b/u8bd5/u51c6/u590702}按道理这个对象也应该是dict结果打印是这时候我大致明白了原来我系统中引用了lxml库。所以type(x)的时候就找到这个类而copy模块里边没有针对这种对象的处理。最后代码修改如下158 cls type(x)159 if cls lxml.etree._Attrib:160 cls dict