python列表作为默认参数的问题
作者:互联网
# coding=utf-8 def foo(a, x=[]): x.append(a) return x print(foo(1)) print(foo(2)) # 预想输出 # [1] # [2] # 实际输出 # [1] # [1, 2] 究其原因,原来是这个函数的默认值只在函数被加载时调用一次,之后若不传值则一直都会用加载函数时候设置的值,此值不会再改变。若这个默认值我们设置的是个常量并不会对我们对程序有什么影响,若是个变量,那可就要小心啦!是个变量最后还是当成了常量使用。 那么为了实现符合我们预期对要求,我们就只能像下面这样使用啦。大家都能想到,也就是在函数内部为变量赋值。 正确示例: # 正确示例 def foo1(a, x=None): if x is None: x = [] x.append(a) return x print(foo1(1)) print(foo1(2)) # [1] # [2]
标签:默认值,函数,示例,python,默认,列表,print,foo,foo1 来源: https://blog.51cto.com/u_13560219/2785967