阅读下面一段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
分享到:
相关推荐
IQ智商测试 任务 IQ智商测试 任务背景 本任务是完成IQ智商测试,通过...在定义函数时,Python支持默认值参数,即可以为形参设置默认值,当调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数
这篇文章主要介绍了Python定义函数时参数有默认值问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在定义函数的时候,如果函数的参数有默认值,有两种...
使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。...目的:帮助理解函数的默认参数和关键参数在Python中的具体使用。
本文实例展示了Python使用函数默认值...有一个地方需要注意的是,有默认值的参数必须在函数参数列表的最后,不允许将没有默认值的参数放在有默认值的参数后,因为如果你那样定义的话,解释器将不知道如何去传递参数。
第六章Python函数习题及答案--中文
问答互动引出学习目标 讲授法 示范练习 随堂报告 Python-Python函数-教学设计全文共6页,当前为第1页。Python-Python函数-教学设计全文共6页,当前为第1页。《Python函数》教学设计 Python-Python函数-教学设计全文...
python函数实验报告
在Python中,函数的参数有四种: 必需参数 关键字参数 默认参数 不定长参数 必需参数是在函数调用时,须以正确的顺序传入,且调用时的数量必须和声明时的一样参数。 实例:定义一个printme函数,并定义一个必需参数...
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 陷阱重现 我们就用实际的举例来演示我们今天所要讨论的主要内容。 下面一段代码定义了一个名为 generate_new_list_with 的...
下面小编就为大家带来一篇python中函数默认值使用注意点详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
rhino python函数中文网址.txt
自学加油!(凑字数有点难) 函数章节 定义函数 嵌套函数 调用函数 为函数设置默认值 函数层次 解读深层的错误
Python函数思维导图,便捷整理思路,函数介绍、函数的定义与调用、函数参数、函数返回值、、局部变量和全局变量、递归函数、匿名函数
python函数大全
python 函数的使用-python基础,python函数的使用说明,有python2的参考代码 函数的基本组成 函数是重用的程序段。 一块语句一个名称,可以在程序的任何地方使 用这个名称任意多次地运行这个语句块。 这被称为 调用 ...
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!