位置: 编程技术 - 正文

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文件处理方法)

  • 长期股权投资产生的投资收益属不属于非经常性损益
  • 进项税额转出要交企业所得税吗
  • 银行对账单由谁去取
  • 购进材料运输费属于什么会计科目
  • 税金及附加和应交税费的关系
  • 建筑公司没有资质可以施工吗
  • 申报过后财务报告怎么查
  • 会议服务费怎么开
  • 预估收入增值税申报
  • 现金日记账划线更正法
  • 业务招待费怎么做会计分录
  • 用于本企业职工的福利应当征收消费税吗
  • 高工资怎么说
  • 一般存款账户可以转账给个人吗
  • 增值税税控设备服务费
  • 公司开出的经济补偿金可以税前扣除吗
  • 股权变更印花税双方都要交吗
  • 税控盘抵扣增值税怎么做账
  • 发票认证勾选是一回事吗
  • 公司非本单位退休人员发放工资
  • 暂停水电
  • win10开机会自动打开网页
  • mac怎么打开hosts文件
  • 出口关税的税率
  • 电脑折旧率计算公式
  • 收到生育津贴会计分录
  • services. exe
  • 折旧计算表属于外来原始凭证吗
  • 营改增改了什么
  • php 调用函数
  • 研发费用支出税前扣除比例
  • 债务重组利得计入投资收益还是营业外收入
  • from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for ...
  • vue批量上传图片至oss
  • 出口退税的申报期限是多久
  • 太平鸟的翅膀上有几道红羽毛
  • 农业产品征税范围注释财税字[1995]52号a
  • unix时间戳长度
  • vue中methods的作用
  • 印花税不足一元需要缴纳吗
  • 土地出让金返还比例是多少
  • php function函数的用法
  • ufw 设置
  • 破解版微擎框架如何升级
  • python 微信
  • 付报刊费计入什么科目
  • 处置长期股权投资产生的投资收益是什么
  • 其他综合收益转入留存收益还是投资收益
  • 企业收到发票后怎么入账
  • 技术服务型企业企业所得税率
  • 分期收款销售产品
  • 印花税应计入哪些费用
  • 存货盘亏原因不明会计分录
  • 免增值税项目可以抵扣吗
  • 期权费的合理范围计算
  • 公司内部的往来款用什么表格怎么做账
  • 可以假设两种情形吗
  • 出租房屋会计账务处理
  • 以前年度的银行流水可以补进来做账嘛
  • 工会活动购买的产品
  • 企业收到加盟费怎么开发票
  • 资产处置损益的明细科目
  • 菜品毛利怎么计算
  • 销项税红字发票如何做账
  • 建账及账务处理步骤
  • centos如何更新内核
  • windows10预览版是什么
  • windows7怎么画画
  • win传统桌面
  • 软raid怎么组
  • win8 ui
  • win10桌面图标排列设置
  • win10大更新2021要多久
  • python socket操作
  • z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
  • Cocos2dx3.2 Crazy Tetris 基本设置及主菜单页面(菜单、按钮)
  • 接口回调java
  • 浏览图片的软件叫什么
  • html5游戏引擎排行
  • 国家税务总局风险识别报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设