[被坑纪念][转帖]Python函数默认参数的一个小陷阱
来源:互联网 发布:时时彩平台源码出租 编辑:程序博客网 时间:2024/05/22 23:24
原文地址:http://www.byywee.com/page/M0/S211/211243.html
Python函数默认参数的一个小陷阱
def main():
if __name__ == "__main__":
以上小程序会有如下输出:
args = [99999, 10]
args before = [99999, 10]
args = [99999, 10, 99999, 10]
按照通常的理解,第二次调用的args应该为默认值[],但为什么会变成上一次的结果呢?
查阅Python manual有如下的说法:
if penguin is None:
penguin = []
penguin.append("property of the zoo")
return penguin
至此,原因已经很清楚了:函数中的参数默认值是一个可变的list, 函数体内修改了原来的默认值,而python会将修改后的值一直保留,并作为下次函数调用时的参数默认值
————————————————————————————————————————————————
遥遥补充:
class edit_unit:
- [被坑纪念][转帖]Python函数默认参数的一个小陷阱
- Python函数默认参数的一个小陷阱
- Python函数默认参数的一个小陷阱
- Python 列表作为默认参数的陷阱
- Python默认参数的设计陷阱
- python中函数默认参数的陷阱(《改善python程序的91个建议》)
- 默认参数提升在可变参数函数的陷阱
- python 可变参数的一个陷阱
- Python函数参数默认值的陷阱
- Python函数的默认参数
- python函数中使用默认参数的坑
- python 函数默认参数的问题
- 谈谈Python函数的默认参数
- Python函数参数默认值的陷阱和原理深究
- Python函数参数默认值的陷阱和原理深究
- Python函数参数默认值的陷阱和原理深究
- 【转载】Python函数参数默认值的陷阱和原理深究
- python默认参数的坑
- 转载——利用map文件调试程序崩溃
- 12个球用天平称3次的问题
- SVN的文件夹链接太强大了!(目录链接,目录映射,svn:externals)
- SEDA简介与源码解读(一)
- exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle解决办法
- [被坑纪念][转帖]Python函数默认参数的一个小陷阱
- 程序员,独立思想,新人
- 【Android组件学习】Spinner的基本用法和Adapter的作用
- 网页布局技巧:CSS文件设计初始化代码
- Applications are expected to have a root view controller at the end of application解决办法
- ESB学习笔记(Spring Integration实战)
- 21.python对象的浅拷贝和深拷贝
- Jsp文件下载
- HTML5的出现是否会让Flash和Silverlight无用武之地?