【发布时间】:2014-12-15 19:19:17
【问题描述】:
背景:我在一个 Python 程序中有几个被重复调用的紧密循环,其中包括 datetime.datetime.now() 方法,以及 datetime.datetime.min 和 datetime.datetime.max 属性。为了优化,我想将它们导入本地命名空间,避免重复的、不必要的模块层次结构名称查找,如下所示:
from datetime.datetime import now, min, max
但是,Python 抱怨:
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
问题:为什么上述子模块导入不起作用?
解决方法:我可以这样做:
import datetime
dt_now = datetime.datetime.now
dt_min = datetime.datetime.min
dt_max = datetime.datetime.max
但是,我很好奇为什么更传统的方法不起作用?为什么我不能直接从 datetime.dateime 子模块导入方法和属性? ...而且,是否有任何理由避免上述解决方法(除了可读性、超越自己等)?
谢谢!
【问题讨论】:
-
你最好不要导入 max 和 min ,否则当你调用内置的 min 或 max 函数时可能会出现意想不到的结果
-
@PadraicCunningham,你是对的。这就是为什么我在解决方法中更改了名称,但我懒得在原始示例中添加“as”来重命名它们。 :)
标签: python datetime import git-submodules