位置: 编程技术 - 正文

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

  • 金蝶财务软件年末结账步骤
  • 合伙企业的费用在何处扣除
  • 资产组可收回金额包含商誉吗
  • 期初存货中固定制造费用
  • 图书属于什么经济类别
  • 电子商务公司开业活动流程
  • 赠品不开票如何做账
  • 股东投入的资金怎么做账
  • 记账凭证摘要的重要性
  • 净资产利润率等于净资产收益率吗
  • 收款未发货需要纳税吗
  • 专用发票可以下账吗
  • 增值税普票丢失发票联能重开吗
  • 企业税收风险有哪些方面
  • 亏损企业所得税汇算清缴怎么做
  • 小规模纳税人需要做账吗
  • 如何确定赊销额度
  • 母公司如何将子公司转让
  • 税务变更后之前的进项
  • 金税盘怎么做账务处理
  • 财务人员工资计入管理费用还是财务费用
  • 微软输入法中文输入卡顿
  • 收到稳岗补贴计入哪个科目
  • 桌面右键个性化没有关联的程序
  • 在window系统中哪些用户可以查看日志
  • win10专业版如何关闭系统更新
  • 预收的购货款属于收入吗
  • form表单提交数组
  • 外贸公司出口退税率是多少
  • 基于springboot的毕设
  • 研发人员的差旅费可以加计扣除吗
  • php远程命令执行
  • php制作验证码
  • 停车费报销怎么做账
  • flex:4
  • 织梦怎么用
  • MYSQL explain 执行计划
  • dedecms5.7
  • 付款给个人
  • 费用报销单怎么填写
  • sql 存储过程语句
  • 恢复mysql数据库
  • 生产性企业账务处理
  • 小规模出售固定资产账务处理
  • 企业预缴所得税年末应该怎么交税
  • 公司公账转私账违法吗
  • 跨年暂估成本如何冲销
  • 其他应付款如何平账
  • 交易性金融资产入账价值怎么计算
  • 取得抵债资产
  • 检测费可以抵扣吗
  • 运输费用增值税税率9%
  • 贸易公司的会计要做哪些报表
  • 母子公司之间的借款利息支出增值税能否抵扣
  • 工程量应当按照什么计算
  • 电子发票不小心删掉了怎么办
  • 未分配利润的
  • 国有资本金是什么意思
  • 建筑公司劳务费怎么做账
  • SQL Server Alwayson创建代理作业的注意事项详解
  • 阿里云安装apache
  • 联想笔记本在bios关闭触摸板
  • xp系统打开注册表
  • window组件在哪里
  • centos 安装源设置出错
  • 重装系统前 病毒怎么办
  • win7文件夹怎么显示大小
  • win8控制面板怎么打开
  • 安卓app开发框架模板
  • bat 命令大全
  • c++11视频教程
  • node搭建本地服务器运行html
  • 基于javascript的毕业设计
  • python3新增特性
  • jQuery添加类名
  • 纳税人谈感受
  • 企业取得了哪些成绩
  • 个人所得税是哪种税率
  • 国税地税发票编码查询
  • 网上如何申请
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设