2

我不明白为什么这会失败,有人可以解释一下:

import datetime

def test(timestamp):
    xt = datetime(2013, 4,4)
    dt = datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S')
    print (xt,dt)

test('04/04/2013 08:37:20')

错误是:

回溯(最近一次通话最后):
  文件“”,第 12 行,在
  文件“”,第 5 行,在测试中
TypeError:“模块”对象不可调用

from datetime import datetime相反,它似乎可以正常工作。我不明白有什么区别。

谢谢。

4

5 回答 5

5

因为在datetime模块中,有一个datetime()函数,但你没有调用它(你试图调用模块,这就是你得到 a 的原因TypeError: 'module' object is not callable)。

import datetime
def test(timestamp):
    xt = datetime(2013, 4,4) # Problem is this line.
    dt = datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S')
    print (xt,dt)

test('04/04/2013 08:37:20')

要修复该行,请将其更改为:

xt = datetime.datetime(2013,4,4)

起作用的原因from datetime import datetime是因为你导入了特定的函数,所以你不需要做datetime.datetime().

于 2013-04-04T07:59:29.710 回答
1

datetime既是模块又是该模块中的类。在您的示例中,您需要datetime.datetime.

于 2013-04-04T07:59:11.687 回答
1

xt = datetime(2013, 4,4)

应该

xt = datetime.datetime(2013, 4,4)

这里,datetime是模块的名称。类的全称是datetime.datetime.

于 2013-04-04T07:59:40.563 回答
1

这里datetime可以引用模块或模块内的类,所以你必须消除歧义

import datetime

def test(timestamp):
    xt = datetime.datetime(2013, 4,4)
    dt = datetime.datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S')
    print (xt,dt)

test('04/04/2013 08:37:20')

给出以下输出:

(datetime.datetime(2013, 4, 4, 0, 0), datetime.datetime(2013, 4, 4, 8, 37, 20))

于 2013-04-04T08:02:43.320 回答
1

datetime是日期时间模块datetime.datetime是日期时间类型

import datetime

def test(timestamp):
    xt = datetime.datetime(2013, 4,4)
    dt = datetime.datetime.strptime(timestamp, '%d/%m/%Y %H:%M:%S')
    print (xt,dt)
于 2013-04-04T08:03:51.250 回答