给定下面的python代码,请帮助我理解那里发生了什么。
start_time = time.time()
time.sleep(42)
end_time = time.time()
uptime = end_time - start_time
human_uptime = str(datetime.timedelta(seconds=int(uptime)))
所以我得到了start time
和end time
之间的区别,在第5行,我通过投射来计算持续时间,现在,进一步的解释是什么?
我知道delta是什么意思(平均值或差分),但是为什么我必须把seconds = uptime
传递给timedelta
,为什么字符串转换工作得如此好以至于我得到HH:MM:SS
?
因为timedelta对象可以传递秒、毫秒、天等。。。所以需要指定传入的内容(这就是为什么使用显式键)。向
int
进行类型转换是多余的,因为它们也可以接受浮点数。格式化的不是类型转换,而是对象的内部
__str__
方法。事实上,如果你写下:因为timedelta的定义如下:
所有参数都是可选的,默认为0。
你可以用这种方式用可选参数轻松地说“三天四毫秒”。
对于str casting,它返回一个很好的格式化值,而不是
__repr__
,以提高可读性。来自文档:签出文档:
http://docs.python.org/library/datetime.html#timedelta-objects
相关问题 更多 >
编程相关推荐