位置: 编程技术 - 正文

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

  • 个税要计提吗?
  • 进项税额转出意思是下月还得缴吗
  • 盈余公积计提比例必须是10%么
  • 收到返款计入什么科目
  • 应付销售方代垫的运费计入什么科目
  • 认缴后怎么才算实缴
  • 建筑企业开票都开什么
  • 金蝶迷你版会计科目代码格式
  • 办税员如何绑定企业
  • 冲减收入怎么做账
  • 转账支票开给个人收款人怎么写
  • 固定资产减少当月
  • 个人提供技术服务费开票税率
  • 居民个人根据各项所得的收入 公益捐赠
  • 预付卡销售和充值属于什么费用
  • 境外所得抵免税额是什么意思
  • 开票不走公户
  • 工伤保险费发票
  • 固定资产增值税怎么抵扣
  • 非住宅过户税费标准最新
  • 建筑企业法定代表人和建筑公司资质不是一个人
  • 企业自有固定资产有哪些
  • 跨年度专用发票如何开红字发票
  • 1697510816
  • 转让金融商品应交增值税计算公式
  • 苹果怎么充电更好
  • 购入成品油怎么做会计分录
  • 员工油费补贴过期怎么办
  • 修改注册表限制cpu速度
  • 默认网关不可用怎么修复
  • 春天里的____作文
  • 公积金托收怎么变更
  • 申请开立临时存款账户
  • 往来款能转为投资款的说明
  • mch是什么文件
  • php网站结构
  • 加工费计入
  • python自动化selenium
  • 机器学习篇-指标:AUC
  • rcnn系列详解
  • 多交增值税计入什么科目
  • 日主题ripro v8.1破解版(修复缓存器功能)
  • python迭代器有什么用
  • mongodb数据类型有哪些
  • 什么是指企业的所有部门彼此协调为顾客服务
  • 政府补助免征企业所得税条件会计分录
  • 银行开户有几种账户
  • 清卡操作流程
  • 所得税多交退回分录
  • 支付给非金融机构的费用
  • SQL Server 2008 数据库有哪些版本?
  • 公司收取保证金合法吗
  • 商铺固定设施指哪些
  • 库存商品盘盈怎么做账
  • 长期股权投资收益会计处理
  • 股权支付会计处理
  • 企业收到的政府补助属于
  • 企业间借贷是否合法2018
  • 单位购牙膏牙刷卫生纸怎么做账?
  • 不动产进项税额转出
  • 本单位职工可以在本单位兼职吗
  • 开一般户需要什么理由
  • mysql绿色版配置
  • sql 判断数据是否存在
  • sql server 2000安装包
  • mysql5.7.24安装配置教程
  • centos添加自启动
  • wrme.exe是什么
  • centos 网卡顺序
  • window10重启按什么键
  • mac怎么设置
  • android游戏编程之从零开始
  • bat批处理删除文件
  • node.js怎么用
  • python中私有函数调用方法解密
  • 国际税务局邮箱是多少
  • 云南省税务局咨询电话
  • 东莞为什么这么多人
  • 内蒙古包头税务局客服电话
  • 中医药文化进校园活动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设