今天在写一段代码的时候,需要对字典进行传值操作。

一般情况下字典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 copy

copy.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

python deepcopy报错_python 字典对象赋值之deepcopy遭遇的问题及解决过程(lxml惹的祸)...相关推荐

  1. python 等号报错_Python学习----Python基础

    Python基础 一.数据类型和变量 1.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量. 例如: a =520# a是整数prin ...

  2. python index 报错_python基础语法常见报错类型

    一.TypeError:类型错误,对象⽤来表示值的类型⾮预期类型时发⽣的错误. ### 错误例⼦: age=18 print('我的年龄是'+age) ### 报错信息:TypeError:canon ...

  3. python 命名空间报错_python命名空间与作用域

    命名空间不共享名称. 在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联.但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称.也就是说, ...

  4. python语法报错_Python语法总结

    Python 简明语法总结 !!! 只针对有经验开发人员 简单输入输出 输出 print 10 , '十' 输入 name = raw_input() python基础 数据类型和变量 常规类型:整形 ...

  5. python程序报错_Python编程报错总汇

    1 使用变量时,输入错误 message = "Hello Python Crash Course reader!" print(mesage) 变量错误 Traceback (m ...

  6. python语法报错_Python语法的常见错误和处理异常

    在学习Python的过程中,一定会遇到很多困难,我相信很多时候的,报错就会是让人抓狂,一个好的程序员最主要的特质,就是处理错误的能力.在面对每次遇到的问题,要多总结多做笔记,争取下次避免犯同样的错误, ...

  7. [转载] python缩进报错_python缩进报错

    参考链接: Python语句,缩进和注释 广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 学习 python 与其他语言最大的区 ...

  8. python缩进报错_python缩进报错

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 学习 python 与其他语言最大的区别就是,python 的代码块不使用大括号 ...

  9. python listdir报错_Python常见十六个错误集合,你知道那些?

    使用python会出现各种各样的错误,以下是Python常见的错误以及解决方法. 1.ValueError: 'Conv2d_1a_3×3' is not a valid scope name 这个是 ...

最新文章

  1. 盘点2020国内本科开设人工智能专业高校
  2. SAP Spartacus的StorefrontConfig对象
  3. 算法【二分查找】(数组)
  4. python将excel转换成图片_python-尝试将Excel文件保存为图片并加上水印
  5. Express-router
  6. 原声JS面向对象实现的简单轮播
  7. 递归实例以及应用包含形参辨析
  8. android捕获全局异常,并对异常做出处理
  9. eclipse 4.3 汉化
  10. 从程序员到项目经理(16):原来一切问题都是可以解决的【转载】
  11. js实现图片在一个div中点击按钮放大缩小效果
  12. linux下安装asm数据库,Linux下ASM实例的安装
  13. 引入微信支付Java SDK WxPayAPI_JAVA.zip
  14. Linux 安装 JDK + Tomcat + Mysql
  15. 人大金仓(kingbase8)安装与初始化超详细教程
  16. java中复数类中相加,复数运算的JAVA类
  17. python开发一个web项目得需要多少行代码_用Python写个迷你出门问问|10几行代码搞定...
  18. 第二章:华软代码生成器模板配置
  19. pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例
  20. 使用 JADE 平台进行智能体开发

热门文章

  1. 【笔记】用正则匹配字符串的方法摘抄
  2. 用visio反向工程画oracle数据库表的结构图
  3. 用SQL实现记录上下移动的思路
  4. 操作系统——文件目录
  5. vscode写java没有提示_VS Code报错Language Support for Java(TM)插件显示需要JDK11 写java代码没有提示...
  6. c++ 将文件内容输出到word上_原来PDF转Word可以这么简单,只需要一个键!办公起来真方便...
  7. c++ map初始化同时赋值_Golang入门教程——map篇
  8. a12处理器和骁龙855_【性能】骁龙855最新跑分曝光 多核竟超苹果A12?
  9. 王道8套有变化吗_求求你别再套花艺设计公式了
  10. IAR STM32工程报错Error[Pe020]: identifier “GPIO_Pin_0”is undefined D:\STM32F103_Demo\App\main.c