我正在通过匹配日期在python中查找数据存储条目。我想要的是每天选一个“今天”的条目。但由于某些原因,当我把代码上传到gae服务器时,它只工作一天,第二天它仍然返回相同的值。在
例如,当我上传代码并在2014年1月7日执行时,它返回的值是2014年1月7日,但第二天2014年1月8日,它仍然返回2014年7月1日。在
如果我重新部署相同的代码并再次执行它,它将继续运行到2014年1月8日,但第二天将再次失败。在
在我的开发环境中它工作得很好。。。在
为什么?谢谢你的帮助!在
class ClosingValueHandler(webapp2.RequestHandler):
def get(self):
sct()
(…)
^{pr2}$
正如@blackbullet4749所提到的,正是这段代码导致了您的问题:
具体来说,您希望每次调用函数时都运行
datetime.datetime.now().date()
。在实际发生的情况是,
datetime.datetime.now().date()
只运行一次,而不是在函数被调用时,而是在它第一次被定义时——也就是说,当函数对象被实例化时。在执行代码时,Python实际上运行这些代码行,并创建一个与其他对象一样存在的函数对象。默认参数位于指定为函数对象属性的元组中。在要亲自查看,请尝试以下操作:
^{pr2}$在打印出来的元组中看到的是“from_date”值,它在代码中一直被重用。在
如果您希望能够在默认行为为占用当前时间的情况下调用函数,但可以选择重写,请改为执行以下操作:
有关默认参数值的详细信息,请参见effbot post。在
顺便说一句,不知道这个函数应该做什么。似乎什么也不回。在
它似乎只获取应用程序部署时的日期时间。移动起始日期=日期时间。日期时间。现在().date()从定义中跳出到函数体中,然后查看它是否有效。在
看看这是否会改变你的结果。当你在函数外设置一个值时,通常会发生这种情况,因为在应用程序重新启动之前,它永远不会被调用。在
相关问题 更多 >
编程相关推荐