您的位置:首页 > 编程语言 > Python开发

为什么python默认参数一定要指向不可变对象

2019-05-10 20:43 507 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44831499/article/details/90083618

python语言中,函数的默认参数必须指向不可变对象。
举个简单的例子:

def test(L=[]):
L.append('a')
return L

print(test())
print(test())
print(test())

得到的结果是:

['a']
['a', 'a']
['a', 'a', 'a']

原因就在于函数的默认参数在函数定义时就已经被计算出来了,也就是L指向的内存位置已经确定,在调用test()函数改变了L的内容后,再次调用test(),默认参数L的内容就已经发生了变化。

如果想把默认参数设置为空列表,可以这么做:

def test(L=None):
if L is None:
L = []
L.append('a')
return L
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐