位置: 编程技术 - 正文

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

  • 盘亏存货进项税额转出的计算公式
  • 补交印花税怎么做账
  • 偷税与漏税的界限是
  • 转正后个税增加
  • 2019年所得税汇算清缴政策
  • 小规模纳税人增值税税率
  • 研发费用长期是否可控
  • 境外企业所得税税率
  • 软件企业收到先征后返的增值税税款是否要缴纳企业所得税
  • 期房购置税怎么算
  • 以前没有计提增值税吗
  • 政府专项补助购置固定资产进项税可以抵扣吗?
  • 企业认缴出资怎么做账
  • 其他应收款在什么方
  • 利润表中所得税怎么算
  • 个人去税务局开劳务费税率
  • 进项税额转出年末要结转吗
  • 年终奖扣税和工资扣税
  • 增值税代扣代缴抵扣
  • 营改增后小规模纳税人如何报税
  • 丧失控制权合并报表内部交易抵消
  • 餐饮定额发票怎么征税
  • 公司注销报表怎么调
  • 一次性收取一年服务费怎么确定收入
  • 加工业务怎么报税的
  • 金融企业哪些呆账损失可以在税前扣除?
  • 尚未支付的货款属于什么会计要素
  • 外贸企业出口货物
  • 简单才能极致
  • wordpress如何使用
  • consolo application
  • easyexcel解析csv
  • 最早的手机是哪一年
  • wordpress上传文件限制
  • laravel实战教程
  • vue项目页面跳转
  • php array_udiff_assoc 计算两个数组的差集实例
  • centos7编译安装内核
  • vnc viewer连接windows
  • 门诊收费票据能作为报销凭证吗
  • 其他应收款待抵扣进项
  • 营业收入和利润总额的关系
  • 不免征个人所得税的是个人转让著作权所得
  • 详解九章算法
  • 长期借款期末余额表示什么
  • 小企业会计准则调整以前年度费用分录
  • 收到服务费的增值税发票
  • sql自定义
  • 外购商品职工福利进项税额转出如何记账?
  • 销售退回如何做账务处理
  • 维修设备增值税税率
  • 其他流动资产待摊费用
  • 待抵扣增值税退税
  • 不是销售性质的工作
  • 短期借款的账务处理借增贷减
  • 哪些商业保险可以抵扣个税
  • mysql优化参数详解
  • 关于读书的名言名句
  • u盘装系统win8
  • bois开启usb功能
  • win 10 ie8
  • Win10系统如何开启全部权限
  • centos重新安装命令
  • win7电脑全屏
  • win10搜索设置选项
  • win8.1无法更新
  • linuxone
  • linuxssh免密登录
  • 在全盘搜索以win
  • js用于
  • python 字符 字符串
  • javastudio
  • express 前后端分离
  • jquery实现图片横向移动
  • 公司税务风险情况说明怎么写
  • 上海税务ca证书更新
  • 北京市地方税务局2015第10号文件
  • 城市维护建设税法自2021年10月1日起施行
  • 江苏省税务局授权网址
  • 如何抵扣缴纳增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设