# Coding=utf-8def foo(a, x=[]): x.append(a) return xprint(foo(1))print(foo(2))# 预想输出# [1]# [2]# 实际输出# [1]# [1, 2]究其原因,原来是这个函数的默认值只在函数被加载时调用一次,之后若不传值则一直都会用加载函数时候设置的值,此值不会再改变。若这个默认值我们设置的是个常量并不会对我们对程序有什么影响,若是个变量,那可就要小心啦!是个变量最后还是当成了常量使用。那么为了实现符合我们预期对要求,我们就只能像下面这样使用啦。大家都能想到,也就是在函数内部为变量赋值。正确示例:# 正确示例def foo1(a, x=None): if x is None: x = [] x.append(a) return xprint(foo1(1))print(foo1(2))# [1]# [2]总结
以上是内存溢出为你收集整理的python列表作为默认参数的问题全部内容,希望文章能够帮你解决python列表作为默认参数的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)