
Python 的函数参数支持默认值,这是本人一直喜欢的特性,Python 不支持方法重载,但默认参数可起到类似的效果,还不用写多个函数。现在支持默认参数的语言普遍的,像 C++, C#, Ruby, Groovy, PHP, Scala, JavaScript 等,Java 还不行。
但是特别要小心,Python 的函数默认值与其他的语言是不同的,直接违反了最直观的常识 -- 默认参数应该是省略就每次用同样的默认值,传的话就用传入的值。
当我在 IntelliJ IDEA 中写类似如下的代码
我的 SonarLint 插件就要抱怨了
说是
SonarLint: Change this default value to "None" and initialize this parameter inside the function/method
Default argument value is mutable