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

时间:2010-10-09 07:16:25

标签: python

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 个答案:

答案 0 :(得分:5)

也许你的代表混淆了你:

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

这不是一个元组,它是datetime用作repr()的东西。打印它以获得其string()表示:

>>> print a
2010-10-08

str()自己明确地使用或使用a.strftime()来自己格式化。

答案 1 :(得分:3)

查看了您的图片:Python code screenshot

我认为你假设它是一个字符串,因为print输出一个字符串 - 但这正是它的工作!对象 a datetime。您也无法通过将其传递给date构造函数将其转换为date(),而是应该调用a.date()

答案 2 :(得分:1)

使用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'>
>>> 

答案 3 :(得分:0)

您的陈述

date.today() - timedelta(1)

返回date个对象。

此对象有两个字符串表示形式:

  • 最常见的可读格式是通过调用str()函数(使用print进行调用),在这种情况下,str(a)会为您提供'2010-10-08'

  • 第二种表示,即对象性质,是使用repr()函数。在这种情况下,repr(a)会返回'datetime.date(2010, 10, 8)'