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