gpt4 book ai didi

python - 比较 datetime.datetime 是否存在或无

转载 作者:太空狗 更新时间:2023-10-29 21:23:09 25 4
gpt4 key购买 nike

我正在使用 Python 在 Google App Engine 上运行一个小应用程序。在模型中,我有一个 DateTimeProperty 类型的属性,即 datetime.datetime。创建时没有值(即“无”)。我想比较 datetime.datetime 是否为 None,但我不能。

if object.updated_date is None or object.updated_date >= past:
object.updated_date = now

updated_datepast 都是 datetime.datetime。

我收到以下错误。

TypeError: can't compare datetime.datetime to NoneType

正确的做法是什么?

最佳答案

鉴于前面的讨论似乎已经确定其中任何一个变量都可以是 None,一种方法是(假设您想要设置 object.updated_date的变量是 None):

if None in (past, object.updated_date) or object.updated_date >= past:
object.updated_date = now

重点是检查 None in (past, object.updated_date) 可能比语义上等效的替代方法更方便 (past is None or object.update_date is None) (可以说 epsilon 由于其更好的紧凑性而更具可读性,但它当然是一个有争议的风格问题)。

顺便说一句,这是一个不太值得争论的风格问题;-),我强烈建议不要使用内置名称作为您自己的变量(和函数等)的名称 -- object 是这样一个内置名称,在这种情况下,它显然被用于您自己的目的。使用 obj 更简洁,仍然可读(可以说更是如此;-),并且没有缺点。在任何给定情况下,您都不太可能被用您自己的“隐藏”内置名称的不确定做法“咬伤”,但最终它会发生(因为您碰巧在某些情况下需要隐藏名称的正常含义稍后进行普通维护操作),然后您可能会遇到令人困惑的调试情况;同时,您冒着让其他读者/维护者感到困惑的风险……并且绝对不会以这些缺点换取任何优势。

我意识到很多 Python 的内置名称在这个意义上是一个“有吸引力的麻烦”...... file, object, listdictsetminmax……对于“一个文件”来说,这些名字显然都很吸引人、“一个对象”、“一个列表”等。但是,学会抵制这种特殊的诱惑是值得的!-)

关于python - 比较 datetime.datetime 是否存在或无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com