位置: 编程技术 - 正文

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

  • 增值税申报可以作废几次
  • 房地产企业拆迁补偿费契税12366
  • 营改增后为什么利息要提供发票吗
  • 如何查看发票是否被抵扣
  • 递延收益影响当期损益吗
  • 税款所属期什么意思
  • 报表申报错误怎么作废重报
  • 金税维护费申报表
  • 验签失败的发票追不回来怎么办
  • 存货跌价准备转销会影响当期损益吗
  • 研发支出费用化支出包括哪些
  • 原材料购入和转出做账
  • 收到的扶贫工作经费会计分录
  • 企业利息收入要交所得税吗
  • 我公司只开了普票未开专票是否需要发票认证?
  • 境外所得纳税
  • 购买软件的增值税可以抵扣吗
  • 购销合同印花税优惠政策
  • 作废发票 红字发票
  • 地税附加税减免政策
  • 增值税减税措施有哪些
  • 固定资产清理产生的费用
  • 银行承兑电子汇票到期要怎么操作
  • scanserver.exe - scanserver是什么进程 有什么用
  • 退回以前年度多交增值税
  • bfsvc.exe是什么
  • 当月不生产,生产成本怎么处理
  • vue3.0项目
  • 选择简易计税方法计税的有
  • 吸收合并重组
  • async/await原理
  • static php作用
  • 头歌实践教学平台官网
  • idea配置meaven
  • 2023年最新最全税率表
  • $ajax请求
  • 传统结算工具的不足有
  • mysql常见操作
  • php变量名称中可以包含哪些元素
  • 售后租回融资租赁帐务处理怎么做?
  • 积分兑换合适吗
  • 个税申报表中的年金是什么意思?
  • 私募基金怎么运作
  • 可明确区分的商品什么意思
  • 什么是存货周转期间
  • 土地出让金抵减增值税
  • 长期待摊费用科目怎么使用
  • 劳动仲裁要出面吗
  • 股权转让后再转让
  • 公司接待考察团的费用入哪个科目
  • 产品成本包括哪几个部分
  • 建筑公司租赁费会计分录
  • 公司活动费用分录
  • 增值税纳税申报表在哪里打印
  • 物业管理企业应按职工工资总额的1.5%计提工会经费
  • mysql日志有哪些
  • mac怎么隐藏桌面文件
  • mac怎么删除系统软件
  • 32位/64位Win10系统开机后桌面图标自动排列的解决办法
  • xp系统如何隐藏我的电脑
  • centos安装zsh
  • win7系统出现蓝屏
  • win10开始菜单什么样子
  • win81激活
  • easyui combobox默认选中
  • android RecycleView 面试
  • Node.js中的事件循环是什么
  • Linux系统安装字体
  • angular.js
  • python计算文件大小
  • grade 编译
  • js响应事件的过程
  • python3中raw_input的用法
  • 地方电子税务局是干嘛的
  • 供电局发票是什么样子的
  • 广东省地方税务局历任局长
  • 河南车船税收费标准图片
  • 四川税务稽查举报电话
  • 微观经济学的十大原理
  • 增值税纳税申报表附列资料(三)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设