Python - 关于方法参数和字典更新(dict.update())方法
初学Python,贻笑大方。
今天遇到一坑,涉及到字典(dict)
作为参数传入方法内时的操作,和更新字典内容两方面内容。
首先第一点:
我们来对比一下一组代码:
代码A:
# 添加默认字段 def setInsertModel(opt_user_id, dic):# 默认字段元组common_dic = {'del_flg': consts.CommonFlg.COM_FLG_OFF.value,'creator_id': opt_user_id,'create_dt': DateUtils.getNow(),'updater_id': opt_user_id,'update_dt': DateUtils.getNow(),}# 添加默认字段dic.update(common_dic)
代码B:
# 添加默认字段 def setInsertModel(opt_user_id, **dic):# 默认字段元组common_dic = {'del_flg': consts.CommonFlg.COM_FLG_OFF.value,'creator_id': opt_user_id,'create_dt': DateUtils.getNow(),'updater_id': opt_user_id,'update_dt': DateUtils.getNow(),}# 添加默认字段dic.update(common_dic)
仅仅是方法参数定义时加了双星号(**,代表收集到的参数在方法中作为元组使用),但是结果不同。
中间的代码就不贴出来了,省的丢人。下面是model更新后的结果:
第二条数据是代码B执行后的结果,而第一条与第三条数据则是代码A执行后的结果。这说明作为参数的dic,在代码A中并没有被修改。
现在作为初学者简单的认为是参数的作用域的问题,用双星号定义的字典,仅仅作为收集参数用的形参,作用域仅在本方法内部,出了方法体就没人认识这个dic的东西了;相反代码B中的dic就是原字典的引用,我对这个字典进行操作后,会直接作用到这个字典中,所以代码B会将默认的字段都添加到需要更新的字典中。如果说的不对,欢迎指教。
那么接下来第二点:
这个就真的比较小儿科了,还是来比较一段代码:
代码C:
# 添加默认字段 def setInsertModel(opt_user_id, dic):# 默认字段元组common_dic = {'del_flg': consts.CommonFlg.COM_FLG_OFF.value,'creator_id': opt_user_id,'create_dt': DateUtils.getNow(),'updater_id': opt_user_id,'update_dt': DateUtils.getNow(),}# 添加默认字段dic.update(common_dic)
代码D:
# 添加默认字段 def setInsertModel(opt_user_id, dic):# 默认字段元组common_dic = {'del_flg': consts.CommonFlg.COM_FLG_OFF.value,'creator_id': opt_user_id,'create_dt': DateUtils.getNow(),'updater_id': opt_user_id,'update_dt': DateUtils.getNow(),}# 添加默认字段dic = dic.update(common_dic)return dic
代码D在执行插入操作时直接报错了,TypeError:‘NoneType’。其实道理非常简单,因为dict.update()方法没有返回值,dic被赋了NoneType,当然报错了。
转载于:https://www.cnblogs.com/cheminea/p/8583244.html
Python - 关于方法参数和字典更新(dict.update())方法相关推荐
- Python元组和字典的使用、使用字典的注意事项、字典查找数据、字典的增删改、字典的合并 update方法、字典的遍历
1.元组的使用 count 和index方法 -元组和列表很像,都是用来保存多个数据: -使用一对小括号()来表示一个元组: -元组和列表的区别在于,列表是可变的,而元组是不可变数据类型: -由于它是 ...
- 【Java从零到架构师第③季】【26】SpringMVC-反射获取方法参数名_SpringMVC是如何获取方法的参数名的
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][26]SpringMVC-反射获取方法参数名_SpringMVC是如何获取方法的参数名的 利用反射获取方法的参数名 直接编译 修 ...
- 【python入门篇——11】字典(dict)详解
1.定义 字典是一种可变的容器,可以存储任意类型的数据 字典中的每个数据都是用"键" (key) 进行索引,而不像序列可以用下标进行索引 字典中的数据没有先后关系,字典的存储是无序 ...
- 把一个字典的键值对加入到另一个字典中dict.update(dict2)
描述 Python 字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里. update()方法语法: dict.update(dict2) 参数 dict2 ...
- java 注解 方法 参数_java在注解中绑定方法参数的解决方案
我们有这样子的需求,需要记录用户操作某个方法的信息并记录到日志里面,例如,用户在保存和更新任务的时候,我们需要记录下用户的ip,具体是保存还是更新,调用的是哪个方法,保存和更新的任务名称以及操作是否成 ...
- java:axis2环境下获取方法参数名的另一种方法
java本身提供的方法不能获取方法的参数名的,只能获取每个参数的类型 比如: public String concatString(String param1,String param2){retur ...
- 在Python中将列表转换为字典的10种方法
Python数据结构 (Python Data Structures) Python lists and dictionaries are two data structures in Python ...
- python 编程开发 —— 字典(dict)介绍
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- python中字典类型中的item是什么-python中 字典类型内置方法
python中 字典类型内置方法 一.字典(dict) 1·. 存多个值,但是每一个值都有一个key与之对应.列如存在值有姓名:jiayi.年龄:18.身高:173 2.定义方式 在{}内 ...
最新文章
- 这些算法工程师,他们真的是太难了!
- UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定
- 男人25岁,别让“努力“毁了你的辉煌
- egg框架访问 Mysql 数据库 egg-mysql 增删改查
- jQuery firefox chrome IE 绑定mousewheel事件
- mysql all和distinct_mysql distinct 使用实例(过滤多余的重复记录)
- 【转载】mysql view prevents operation处理
- github网站进不去怎么办
- 开机显示输入最佳预设值_电脑显示输入最佳预设值并重新开机是什么意思
- 【U8】会计科目使用自定义项著辅助核算步骤及注意事项
- 计算机主机突然断电有什么影响,电脑突然断电对硬件有影响吗?电脑突然断电的危害...
- Confluence 6 设置一个空间主页
- html div 虚线边框样式,纯CSS实现渐变虚线框和边框滚动动画
- 当当网商品详情API接口(当当商品详情接口,当当商品评论接口,当当商品问答接口,当当抢购价接口,关键词搜索当当网商品接口)代码对接教程
- 密码学:流加密法与块加密法
- 实验六 医学图像的增强(二)
- Kingdian慧荣SM2256K AB主控固态硬盘卡住慢修复教程
- Json和Json解析
- win7计算机 我的文档,Win7系统优化:如何移动Win7我的文档保存位置
- DNSPod十问沈添:低代码将让程序员集体失业?