位置: 编程技术 - 正文

python 默认参数问题的陷阱(Python默认参数 数组坑)

编辑:rootadmin

推荐整理分享python 默认参数问题的陷阱(Python默认参数 数组坑),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 默认参数顺序,python 默认参数顺序,Python默认参数,python 默认参数值,python 默认参数值,python 默认参数放后面,python 默认参数放后面,Python默认参数,内容如对您有帮助,希望把文章链接给更多的朋友!

python 里面一个常见的陷阱就是函数的默认参数问题。如下:

以下的执行结果如下:

结果如下:

如此结果, 前面三个可以看出 如果没有指定参数的话, 每次调用函数时候, 调用的mylist 是同一个对象。这是因为函数的默认参数,是在代码编译成PyCodeObject的时候, 就已经创建了对象指针,并且存在该函数的func_default内。 以后在代码运行,调用函数的时候,如果没有指定参数的话, 每次调用的话, 该参数变量都是代码编译阶段的变量指针所指定的对象。

此时结果就是:

([1, 1, 1, 1], )默认参数分为两种情况:

默认参数值是不可变对象此时函数的 func_default 一直指向该不变对象, 如果函数内部修改了该变量, 那么该默认参数会指向一个新的不可变对象.不过func_default 不变。 而每次调用函数都是读取func_default, 因此每次执行都一样。

python 默认参数问题的陷阱(Python默认参数 数组坑)

默认参数是可变对象,比如 list, dict, class等这种情况下,如果在函数内修改了指针所指的对象(并未创建新的对象), 那么 func_default 就会改变。这正是开始的mylist发生变化的原因。看下面的例子,:

由于创建了对象, mylist 只是作为一个 新建对象的别名存在, 后面在修改已经与 func_default 无关了。 默认参数的一个应用

先看下面的一个经典的例子:

#简略版本:

结果是 [6, 6, 6, 6] , 而不是 [0, 2, 4, 6], 原因就是闭包的延迟绑定。另外函数绑定的是变量而不是绑定数值。当循环结束了,i的值已经是3, 此时结果都是6. 一个解决方法便是,使用默认参数绑定数值。如下改动:

#简略版本:

这样的话, 利用默认参数在代码编译的时候,便把参数写到函数的func_default中, 就可以绑定0,1,2,3了。结果自然就是

[0, 2, 4, 6]这就是默认参数的一个应用。

上述还有一个生成器修改的方式

Python文件处理 本文给大家介绍Python文件处理相关知识,具体内容如下所示:1.文件的常见操作文件是日常编程中常用的操作,通常用于存储数据或应用系统的参数。pyt

使用简单工厂模式来进行Python的设计模式编程 计模式的目的是让代码易维护、易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的。简单工厂模式又叫静态工厂方法模

Python解析json文件相关知识学习 JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于JavaScript(StandardECMA-rdEdition-December)的一个子集。JSON采用完全独立于语言的文本格式

标签: Python默认参数 数组坑

本文链接地址:https://www.jiuchutong.com/biancheng/383355.html 转载请保留说明!

上一篇:简要讲解Python编程中线程的创建与锁的使用(python 编程技巧)

下一篇:Python文件处理(python文件处理方法)

  • 多缴纳了印花税有什么影响
  • 存货跌价准备的分录
  • 净资产是资产负债表的哪一项
  • 树苗应计入什么科目里面
  • 个人收取借款利息增值税
  • 税款状态已缴款未入库
  • 销售货物没有开票如何处理
  • 公司员工的车外地的停车费怎么做分录
  • 增资扩股如何操作
  • 工程设计企业符合增值税抵减政策吗
  • 合同副本和正本区别
  • 境外单位向境内单位提供咨询
  • 分票报关合票出提单怎么清关
  • 如果公司没有报税
  • 德邦物流增值税发票怎么开
  • 携税宝可以全额抵扣吗
  • 我国个人取得的各种所得有几种类型
  • 固定资产折旧计入成本还是费用
  • 购车时服务费用怎么算
  • 没有成立工会的企业要交工会筹备金吗
  • 海运费付款方式
  • 已经认证的发票怎么冲红
  • 欧拉操作系统和龙蜥哪个好用
  • 北大新闻传播学院副院长
  • win7系统中怎么找不到投影仪
  • uniapp异常处理
  • windows搜索为什么那么慢
  • 慈善总会捐赠流程
  • 在Mac OS Yosemite 系统中如何发送超大邮件附件
  • 商贸企业销售
  • win7安装包下载
  • 企业退货产生的损失谁承担
  • 跨省异地施工
  • shell脚本攻略第三版pdf
  • react函数组件useeffect
  • iframe之间通信
  • php框架自动加载
  • php遍历数组使用的是
  • 公司购买理财产品
  • 研发费用计入营业利润吗
  • 租赁业务
  • dedecms使用教程
  • ubuntu下编译安装opencv
  • sql server中数据文件的扩展名是
  • 企业发生的直接进入当期损益的期间费用包括
  • 年末关账注意事项
  • sqlserver批量更新存储脚本
  • mysql创建和删除数据库
  • 员工意外伤害保险最多赔多少
  • 税金及附加减半征收金额按哪个
  • 普票部分红冲发票需要收回原发票吗
  • 收到残保金退税现金流
  • 3%税率专用发票
  • 汇兑损益分录如何写
  • 计提工资和发放工资的账务处理
  • 当期损益包括哪些科目指的
  • 分页式存储管理中页的大小是可以不相等的
  • bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法
  • windows字幕软件
  • macos high sierra深色模式
  • executor进程
  • windowsxp怎么装windows7
  • 电脑升级到win11会卡吗
  • win10安装字体的操作步骤
  • win8使用手册
  • javascript教程推荐知乎
  • 杂志内页广告
  • Unity3D游戏开发标准教程
  • opengl api version
  • ajax读取json
  • Node.js中的事件循环是什么意思
  • eventlistener js
  • python怎么爬
  • jQuery处理XML文件的几种方法
  • Python判断字符串结尾并输出yes或no
  • 公务员副处级工资待遇
  • 青海国税发票查询系统
  • 关注龙江医保
  • 如何理解改革创新是时代要求
  • 大修费属于什么费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设