python勿使用mutable值作为默认参数
2016-03-31 21:36
375 查看
python勿使用mutable值作为默认参数
首先看以下一段代码def append(num, container=[]): container.append(num) return container print append.func_defaults print append(1) print append(2) ([],) [1] [1, 2]
为什么返回结果发生了改变?python函数执行时,默认参数只会在def函数时初始化一次,并不会每次运行时都发生改变,以后每次调用都使用同一个默认参数变量。
默认参数
函数的默认参数存放在func_defaults,调用函数时若没有传入默认参数,则取出
func_defaults中的值赋给此形参
如果默认值为mutable类型,则为传引用,多次调用时必然出现类似上述的错误
默认参数不要使用mutable类型,使用immutable类型,如None,更合适
上述函数正确的实现方式为
def append(num, container=None): if(container is None): container = [] container.append(num) return container
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法