代码之家  ›  专栏  ›  技术社区  ›  DeepSpace

是否缓存日期时间对象?

  •  2
  • DeepSpace  · 技术社区  · 7 年前

    False

    print(datetime.now() == datetime.now())
    

    我想在每一台“现代”或速度足够快的计算机上,这将是 True .

    print(id(datetime.now()) == id(datetime.now()))
    

    将持续输出 ,这让我相信 datetime 对象(可能只是由 .now() )自动缓存在某处。

    def get_now():
        now = datetime.now()
        print(id(now))
        return now
    
    print(get_now() == get_now())
    exit()
    

    现在我们得到了不同的id并且输出是不断的 假 ,好像通话的开销 get_now

    我环顾四周 datetime.py 而且找不到任何可以解释这种行为的东西,所以我想(如果它存在的话)它是在C层实现的。

    datetime docs

    1 回复  |  直到 7 年前
        1
  •  7
  •   Barmar    7 年前

    temp = datetime.now()
    id1 = id(temp)
    temp = None
    temp = datetime.now()
    id2 = id(temp)
    print(id1 == id2)
    

    datetime

    如果你改写的话

    temp1 = datetime.now()
    temp2 = datetime.now()
    print (id(temp1) == id(temp2))
    

    你会发现它们是不同的。