如何从datetime.datetime子模块直接导入now()

时间:2014-12-15 19:19:17

标签: python datetime import git-submodules

后台:我在Python程序中有一些重复调用的紧密循环,其中包括datetime.datetime.now()方法,以及datetime.datetime.min和{{1属性。为了优化,我想将它们导入本地命名空间,避免重复的,不必要的模块层次结构名称查找,如下所示:

datetime.datetime.max

然而,Python抱怨:

from datetime.datetime import now, min, max

问题:为什么以上子模块导入无效?

解决方法:我可以这样做:

Traceback (most recent call last):
  File "my_code.py", line 1, in <module>
    from datetime.datetime import now, min, max
ImportError: No module named datetime

但是,我很好奇为什么更传统的方法不起作用?为什么我不能直接从datetime.dateime子模块导入方法和属性? ......还有什么理由可以避免上述解决方法(除了可读性,超越自己等等)?

谢谢!

1 个答案:

答案 0 :(得分:12)

datetime.datetime不是子模块。 datetimedatetime模块中的一个类。 now是该类的方法。您无法使用from...import...导入类的各个方法。您只能使用它从包中导入单个模块,或者在模块的顶层存在单个对象。

至于你的解决方法,如果你想要速记,我觉得这样做更具可读性:

from datetime import datetime as dt
dt.now()
# you can also use dt.max, dt.min, etc.

如果你真的想将这些方法直接放在局部变量中,那么你的解决方法是有道理的。