概览
我们在定义形参时会使用默认值,但是需要注意这些默认值在初始化的时候就会被实例化。所以不应该在定义形参的时候使用随机函数指定默认值。
问题描述
如果我们定义如下代码:
1 | import uuid |
执行上述代码时,如果不指定参数值,会发现每次的返回值并不是随机的。
1 | foo() # UUID('21b425cf-c9a6-4479-95e7-061ebed36511') |
如果我们定义类方法,也会遇到相同的问题。
1 | import uuid |
解决方案
所以在如果希望定义一个随机的形参,必须在函数内部定义。
1 | def foo(bar=None): |