Python中time()作为函数默认参数失效的问题求助
问题原因及解决办法
问题本质:Python里函数/方法的默认参数是在定义阶段就完成求值的,不是每次调用时才计算。你写
t = time()作为默认参数,这个time()在类fourcal被定义的那一刻就执行了,之后不管你多少次调用setda,t都会一直用这个固定的初始值,所以两次实例化输出的t完全一样。解决办法:把默认参数设为
None,然后在方法内部判断,当t为None时再调用time()获取当前时间。修改后的代码如下:
from time import time class fourcal: def setda(self, a, b, t=None): if t is None: t = time() self.a = a self.b = b self.t = time() print(t) print(self.t)
这样每次调用setda时,如果没传t参数,都会实时获取当前时间,就不会出现两次输出相同的情况了。
内容的提问来源于stack exchange,提问作者runRyan
相关产品推荐
相关产品推荐

