我是python和Django的新手。我一直在玩Django民意调查教程,并且一切进展顺利,但是我仍然习惯语法。
这行用普通的英语读什么?
return now - datetime.timedelta(days=1) <= self.pub_date <= now
我遇到麻烦的部分是<=运算符。我知道这通常意味着小于或等于,但我从未见过像上述那样连续使用它们。
答案 0 :(得分:6)
简而言之:它检查self.pub_date
是否在now
和now
之前的24小时之间。
Python允许operator chaining [Python-doc]。这意味着如果您写x <= y <= z
,那是x <= y and y <= z
的缩写,除了y
仅被评估一次。
因此,您可以将其读取为:
return (now - datetime.timedelta(days=1)) <= self.pub_date and self.pub_date <= now
现在now
可能是当前时间戳,所以这意味着now - datetime.timedelta(days=1)
比now
早24小时。简而言之,它检查self.pub_date
是否在now
和now
(包括两者)之前的24小时之间。如果满足,则返回True
,否则返回False
。
很可能-尽管我们无法检查-now
是当前时间戳,所以这意味着self.pub_date
是否在昨天(同一时间)和当前时间戳之间。