位置: 编程技术 - 正文

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

  • 收到所得税汇算退税计入补贴收入
  • 新办营利性医疗机构是否免征土地使用税和房产税?
  • 以前年度什么意思
  • 季节性临时工是不是可以不上社保
  • 过了纳税期没有申报
  • 使用党费要向哪里倾斜
  • 从业人数和资产总额是灰色
  • 长期挂账的应付账款怎么处理
  • 出售拆迁补偿住房违法吗
  • 银行存款一直没动会怎样
  • 解除合同补偿金需要缴纳个税吗
  • 每股收益的无差别点小于息税前利润选择什么筹资方式
  • 未到期责任准备计入什么科目
  • 公司购买住宅可以分期付款吗
  • 出售固定资产要交哪些税
  • 税控盘月度统计表怎么打印
  • 企业汇算清缴逾期去补交要带什么资料
  • 内销选择性征收关税政策试点
  • 银行处置以物抵债违法吗
  • 一般纳税人注销库存需要补交税吗
  • 会计所得税和税法所得税
  • 加计扣除农产品进项税额
  • 增值税普通发票税率
  • 母公司计提子公司投资收益
  • windows刷新桌面
  • 加工费计入成本怎么计算所得税
  • 汇算清缴工资薪金支出包含社保费吗
  • 市政府的财政拨款怎么算
  • win10电脑声道怎么设置
  • 局域网网速太慢怎么办
  • PHP:xml_set_end_namespace_decl_handler()的用法_XML解析器函数
  • 无法使用内置管理员账户打开Edge
  • php版本常用的排版软件
  • 银行承兑汇票质押率90%
  • 委托软件开发费用怎么入账
  • php接口规则
  • wordpress自定义文章类型
  • 工资零申报3个月后不能申报了吗
  • 实收资本增加印花税申报流程
  • 数据库锁面试题
  • 投资担保公司的钱都去哪了
  • watch跟computed区别
  • 公账钱怎么取出
  • 关联企业的费用包括
  • 单位银行提取大额现金最多能取多少
  • 押金的增值税处理流程
  • 医院发票丢失怎么补办
  • 季度所得税申报表本年累计怎么填
  • 销售折扣与折让在财务报表哪里
  • 被挂靠方并收取管理费的公司怎样处理账务?
  • 建筑服务红字发票需要填写备注吗
  • 陪标收费标准
  • 跨月的发票开错了该怎么办?
  • 出售未计提完折旧的固定资产需要折扣吗
  • 农业合作社成本有哪些
  • 收到分公司负责人的礼物
  • 无形资产减值准备是什么科目
  • sqlserver恢复模式简单和完整
  • centos6.1安装
  • sql数据库建立步骤
  • ubuntu gz
  • Xp系统设置ip地址
  • solaris 安装
  • win102021年1月大更新
  • qqpcrtp.exe是什么进程 如何删除qqpcrtp进程
  • [置顶] 关于在vs2013中配置opengl红宝书第八版环境
  • Sublime Text + decoda 调试Quick-cocos2d-x 游戏
  • vue导航组件
  • javascript制作简易计算机
  • 使用jquery实现表单验证
  • 使用nodejs实现简单的局域网聊天功能
  • 用shell脚本创建用户
  • ubuntu安装步骤详解
  • unity 3d游戏开发(第2版)
  • 广东省电子税务局登录方式
  • 河南工商年检网上申报
  • 上海个人所得税税率表2023
  • 四川国家税务局官网
  • 江苏国税电子税务局怎么登录
  • 个人社保缴纳年限怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设