`
剑锋凛冽
  • 浏览: 73459 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Python函数参数默认值的陷阱

 
阅读更多

阅读下面一段Python代码

 

def testMutablePara1(a,l=[]):
	l.append(a)
	return l
print testMutablePara1(1)
print testMutablePara1(2)

 初看之下,这段代码在第二次应该输出[2]

但是运行结果却是

 

[1]

[1, 2]

为什么呢?

这是因为Python在处理函数定义时,除了将函数的代码定义到内存中以外,同时会将默认值参数的值作为对象存放到内存中,以后每次调用都使用的都是内存中该默认值的对象,所以当参数默认值是mutable对象,如list、dict等时,每次调用都有可能使结果出现错误的结果。

替代的方法是,将默认值参数用None,而在使用之前显式地进行初始化

如下所示

 

def testMutablePara2(a,l=None):
	if l==None:
		l=[]
	l.append(a)
	return l
print testMutablePara2(1)
print testMutablePara2(2)

 这样就能输出符合预期的结果了。

 

参考http://www.cnblogs.com/ukessi/archive/2010/01/25/python-function-default-parameter-value-problem.html

 

分享到:
评论

相关推荐

    Python程序设计:函数参数.pptx

    IQ智商测试 任务 IQ智商测试 任务背景 本任务是完成IQ智商测试,通过...在定义函数时,Python支持默认值参数,即可以为形参设置默认值,当调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数

    Python定义函数时参数有默认值问题解决

    这篇文章主要介绍了Python定义函数时参数有默认值问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在定义函数的时候,如果函数的参数有默认值,有两种...

    Python中函数的默认值参数和关键参数的使用示例

    使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。...目的:帮助理解函数的默认参数和关键参数在Python中的具体使用。

    Python使用函数默认值实现函数静态变量的方法

    本文实例展示了Python使用函数默认值...有一个地方需要注意的是,有默认值的参数必须在函数参数列表的最后,不允许将没有默认值的参数放在有默认值的参数后,因为如果你那样定义的话,解释器将不知道如何去传递参数。

    第六章Python函数习题及答案--中文

    第六章Python函数习题及答案--中文

    Python-Python函数-教学设计.docx

    问答互动引出学习目标 讲授法 示范练习 随堂报告 Python-Python函数-教学设计全文共6页,当前为第1页。Python-Python函数-教学设计全文共6页,当前为第1页。《Python函数》教学设计 Python-Python函数-教学设计全文...

    python函数实验报告.doc

    python函数实验报告

    Python语言基础:函数的参数.pptx

    在Python中,函数的参数有四种: 必需参数 关键字参数 默认参数 不定长参数 必需参数是在函数调用时,须以正确的顺序传入,且调用时的数量必须和声明时的一样参数。 实例:定义一个printme函数,并定义一个必需参数...

    Python 缺省参数-指定函数缺省参数的默认值

    Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...

    深入讨论Python函数的参数的默认值所引发的问题的原因

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 陷阱重现 我们就用实际的举例来演示我们今天所要讨论的主要内容。 下面一段代码定义了一个名为 generate_new_list_with 的...

    python中函数默认值使用注意点详解

    下面小编就为大家带来一篇python中函数默认值使用注意点详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    rhino python函数中文网址.txt

    rhino python函数中文网址.txt

    python函数案例ch050503.py

    自学加油!(凑字数有点难) 函数章节 定义函数 嵌套函数 调用函数 为函数设置默认值 函数层次 解读深层的错误

    04-Python函数

    Python函数思维导图,便捷整理思路,函数介绍、函数的定义与调用、函数参数、函数返回值、、局部变量和全局变量、递归函数、匿名函数

    python函数大全

    python函数大全

    python 函数的使用-python基础,python函数的使用说明,有python2的参考代码

    python 函数的使用-python基础,python函数的使用说明,有python2的参考代码 函数的基本组成 函数是重用的程序段。 一块语句一个名称,可以在程序的任何地方使 用这个名称任意多次地运行这个语句块。 这被称为 调用 ...

    Python代码-默认值参数.py

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

Global site tag (gtag.js) - Google Analytics