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

为什么这个python操作返回一个元组?

  •  0
  • arbithero  · 技术社区  · 14 年前
    from datetime import date
    from datetime import timedelta
    
    a = date.today() - timedelta(1)
    # a above is a tuple and not datetime
    # Since I am a C programmer, I would expect python to cast back to datetime
    # but it is casting it to a tuple
    

    你能告诉我为什么会这样吗?我怎么能看到上面的操作产生了一个日期时间?

    谢谢

    4 回复  |  直到 14 年前
        1
  •  5
  •   Ivo van der Wijk    14 年前

    也许a的代表让你困惑:

    >>> a
    datetime.date(2010, 10, 8)
    

    这不是元组,而是datetime用作repr()的元组。打印它以获取其string()表示:

    >>> print a
    2010-10-08
    

        2
  •  3
  •   EMP    14 年前

    看了你的照片: Python code screenshot

    我想你是在假设这是一根绳子,因为 print 输出一个字符串-但这正是它的工作!对象 datetime . 不能将其转换为 date 把它交给 date() 构造函数,或者-相反,您应该调用 a.date()

        3
  •  1
  •   Kimvais    14 年前

    type 内置功能:

    >>> from datetime import date
    >>> from datetime import timedelta
    >>> 
    >>> a = date.today() - timedelta(1)
    >>> a
    datetime.date(2010, 10, 8)
    >>> type(a)
    <type 'datetime.date'>
    >>> 
    
        4
  •  0
  •   systempuntoout    14 年前

    你的陈述

    date.today() - timedelta(1)
    

    返回 date 反对。

    • 最常见的可读格式是通过调用 str() str(a) '2010-10-08'

    • 第二种表示,对象性质,是通过使用 repr() 功能。在这种情况下 repr(a) 'datetime.date(2010, 10, 8)' .