位置: 编程技术 - 正文

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

  • 向境外支付赔偿金需要发票么
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 纳税人的住房租金专项附加扣除标准有
  • 房地产企业毛利率计算公式是什么
  • 居间合同有效期多久
  • 支付结算办法主要内容
  • 应入固定资产的已做费用,如何调账
  • 清包工简易征收文件
  • 采购退货退款怎么做账
  • 白蚁防治费怎么计算
  • 借款利息开什么票
  • 即征即退收入是否计入所得税
  • 简易征收红字发票怎么在报表中表现
  • 社保基数每个月可以调整一次吗
  • 补交社保如何证明劳动关系
  • 申报缴纳印花税,取得银行缴税凭证
  • 申请开立临时存档的条件
  • 银行电子承兑如何撤回
  • 服务费发票可以部分红冲吗
  • 材料的盘点包括
  • 土地使用税和房产税
  • 应收账款坏账准备计提比例
  • windows10如何开热点
  • Yii2隐藏frontend/web和backend/web的方法
  • PHP:stream_context_set_option()的用法_Stream函数
  • 轻薄本拆卸
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • 预付款开票税务问题怎么解决
  • php get_headers
  • 对公户怎么取备用金
  • 前端面试经常被问的问题
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用
  • nodejs安装及环境配置vue
  • 蔬菜免征增值税优惠
  • 企业之间收的借款利息该如何交税 原文
  • 研发费用加计扣除2022政策
  • 办理税控盘
  • php首页
  • 帝国cms移动端
  • 启动mysql的语句
  • python方差齐性检验
  • 境外公司汇款给个人要交税吗
  • 高温费收税吗
  • 用友t3制单日期定住不变
  • 房地产开发企业资质证书
  • 公司账户取出来要交税吗
  • 销售额大于营业收入吗
  • 印花税处罚适用征管法六十四条规定
  • 应交税费未交增值税借方表示什么
  • 某首饰商城为增值税一般纳税人,2021年1月发生以下业务
  • 香港发票在内地认可吗
  • 一般户可以发工资有什么后果
  • 公司股东为另一家公司全股
  • 费用报销办法
  • 无形资产是当月计提折旧吗
  • 固定资产盘亏计入固定资产清理吗
  • 车间管理人员工资属于间接费用吗
  • 数据库汉字转拼音
  • mysql的主从复制模式
  • cmd shutdown命令
  • cf游戏初始化失败是因为什么
  • centos7 eth
  • iphone制造成本
  • daio.dll 病毒
  • mac新建窗口快捷键
  • win8.1无线
  • win8怎么设置自启动
  • win7旗舰版系统还原无法启动
  • node. js教程
  • Linux通过sar命令查看网卡流量
  • unity3d 游戏开发 消息通信
  • linux的open
  • js获取指定元素
  • js 延迟函数
  • unity5权威讲解
  • unity中物体移动代码
  • 基于springboot的毕设
  • Python selenium 三种等待方式解读
  • 盐城城南新区的邮政编码是多少号
  • 企业收取承包费如何缴纳增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设