前言
在Python的函数定义中,我们可以给函数形参指定一个默认值,这样,在函数使用时,如果默认值已满足我们的需求,我们就可以略过该参数;如果不满足,我们也可以指定其他值,这样可以使设计的函数兼顾易用性与灵活性。但在Python中有一点需要注意,千万不要以 '[]' 作为参数默认值。
探索
为什么不能将 '[]' 作为函数默认值呢?我们从一个简单的例子开始:
运行结果:
[5]
[5, 5]
[5, 5, 5]
三次调用func(),期望的结果是每次都返回一个[5],但实际上返回的列表中5的个数逐次增多。这样的结果表明,似乎有个列表被缓存在函数中,每次调用的时候都会对这个列表进行操作。
我们在调用中间插入一些指定参数值的调用,看看结果如何: