我的应用程序需要比较两个unix时间戳之间的差异并返回True或False。总之,如果用户在尝试评级的一天或一周内评级,则该函数返回false。我担心这可能不是非常pythonic,我可能重新发明了轮子。在python 2.5中是否有预先打包的库可以帮助我以更好的方式达到相同的结果?
import time
def is_allowed(time_rated, duration):
durations={'day': 86400, 'week': 604800}
if duration in durations and isinstance(time_rated, int):
time_difference = int(time.time()) - time_rated
if time_difference > durations[duration]:
return True
else:
return False
return False
答案 0 :(得分:2)
不,你在这里做的很好,但你可以只返回>
比较的结果,它已经给你一个布尔值。此处也无需将time.time()
浮点数转换为整数:
def is_allowed(time_rated, duration):
durations = {'day': 86400, 'week': 604800}
if duration in durations and isinstance(time_rated, int):
time_difference = time.time() - time_rated
return time_rated > durations[duration]
return False
您可以通过默认duration
float('inf')
来进一步简化此操作,从而为您节省if
次测试:
def is_allowed(time_rated, duration):
if not isinstance(time_rated, int):
return False
duration = {'day': 86400, 'week': 604800}.get(duration, float('inf'))
return time.time() - time_rated > duration
如果出现以下情况,则返回False
time_rated
不是整数duration
不等于'day'
或'week'
(因为没有任何数字大于float('inf')
)。time_rated
小于86400或604800秒,具体取决于duration
。