首页 > IT职业 > IT图书 > Python参数传递,既不是传值也不是传引用
面试的时候,有没有被问到Python传参是传引用还是传值这种问题?有没有听到过Python传参既不是传值也不是传引用这种说法?一个小小的参数默认值也可能让代码出现难以查找的bug?
如果你也遇到过上面的问题,不妨我们来探究下Python函数传递的种种。
解决这个问题,推荐再参数传递可变对象时,默认值设置为None,在函数内部对None进行判断后再赋予默认值。
def test(b=None):
b = b or []
b += [1]
print(b)
test() # [1]
test() # [1]
test() # [1] 再看一段代码。
i = 1
def test(a=i):
print(a)
i = 2
test() # 1 由于参数默认值是在函数定义时而不是函数执行时确定的,所以这段代码test方法的参数默认值时1而不是2。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2325/viewspace-2800599/ ,如需转载,请注明出处,否则将追究法律责任。