Python 可变参数的坑

Python 可变参数的坑

Posted July 04, 2017

Python 的可变参数有*args的位置可变参数和**kwargs参数可变两种. 今天在DEBUG的时候发现了一个非常棘手的**kwargs的坑.

具体代码为:

Python

cls(__auto_convert=False, _created=created, __only_fields=only_fields, **data)

正常情况, data为以下内容时此语句没有问题.

Python

data = {
    "user": "JG",
    "age": 18
}

但由于最近mongodb恢复数据的时候, 有重复数据。 mongodb会加上_created_modified两个字段. 这样data的内容就成了下面这样.

Python

data = {
    "user": "JG",
    "age": 18,
    "_created": datetime.datetime(2017, 7, 1, 8, 11, 6, 699976),
    "_modified": datetime.datetime(2017, 7, 3, 13, 10, 6, 699976)
}

会产生什么BUG? _created重复赋值问题.

Text only

obj = cls(__auto_convert=False, _created=created, __only_fields=only_fields, **data)
TypeError: TopLevelDocumentMetaclass object got multiple values for keyword argument '_created'

我的解决办法是删除了这两个无效字段.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

文章的标题看似自相矛盾,然而我在“正确”二字上打了引号。我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点。

1273
来自专栏java达人

jsp中的JSTL与EL表达式用法及区别(一)

对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概...

2295
来自专栏WindCoder

PHP内存中的对象和引用简介

我首次起草这篇文章是在备战我的PHP认证时,以便更好地了解PHP如何管理内存中的变量和对象。经过大量研究,我意识到找到我的问题的答案并不容易,所以一旦我完成了,...

1501
来自专栏天天

执行上下文

解析: a)先填充参数,x:undefined;y:undefined;z:undefined; b)函数申明,在vo对象里有了function fn(){};...

1544
来自专栏一名合格java开发的自我修养

springMVC参数绑定

处理器形参中添加如下类型的参数处理注解适配器会默认识别并进行赋值。 1 HttpServletRequest 通过request对象获取请求信息 2 Htt...

992
来自专栏程序员互动联盟

【编程基础】C语言常见宏定义

我们在使用C语言编写程序的时候,常常会使用到宏定义以及宏编译指令,有的可能比较常用,有的可能并不是很常用,是不是所有的C语言宏定义以及宏指令你都清楚呢? 指令 ...

3738
来自专栏SnailTyan

Python中的编码

Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。 1. ...

2126
来自专栏林德熙的博客

C# 金额转中文大写

创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的。

1482
来自专栏IT技术精选文摘

跟着实例学习ZooKeeper的用法: 队列

使用Curator也可以简化Ephemeral Node (临时节点)的操作。Curator也提供ZK Recipe的分布式队列实现。 利用ZK的 PERSIS...

2657
来自专栏栗霖积跬步之旅

创建Task的多种方法

Gradle的Project从本质上说只是含有多个Task的容器,一个Task与Ant的Target相似,表示一个逻辑上的执行单元。 我们可以通过多种方式定义T...

3026

扫码关注云+社区

领取腾讯云代金券