python勿使用mutable值作为默认参数
来源:互联网 发布:预算报价软件 编辑:程序博客网 时间:2024/05/22 17:12
python勿使用mutable值作为默认参数
首先看以下一段代码
def append(num, container=[]): container.append(num) return containerprint append.func_defaultsprint 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
1 0
- python勿使用mutable值作为默认参数
- Python 列表作为默认参数的陷阱
- python--可变对象作为默认参数
- python使用变量作为默认参数时所遇到的奇怪问题
- Python 默认参数值
- python 当list,dic作为默认参数的正确写法
- 为什么不能使用成员变量的值作为成员函数的默认参数?
- 存储过程中使用函数作为默认参数
- Python中的默认参数值
- Python中的默认参数值
- Python函数默认参数值
- python函数默认参数使用不当解决方法
- python 函数默认参数值、关键参数
- 案例:Python将函数作为参数以及作为返回值
- Python:列表作为参数
- 当函数作为默认参数的值时
- RequestBody 作为参数使用
- 默认参数python
- java Object类及其常用方法
- leetcode 46. Permutations
- Codeforces 215A A.Sereja and Coat Rack
- mongoDB——read&write操作
- 杭电5640 King's Cake
- python勿使用mutable值作为默认参数
- notePad++快捷键用法
- centos忘记root密码,重新设置的方法
- leetcode_023 Merge k Sorted Lists
- java项目——提升网站性能之java模板引擎beetl
- 网络基础:子网掩码划分2
- 如何写出正确的二分查找?
- 树、二叉树、森林
- 开始运行、开始运行不调试区别