使用 "import" 与 "from X import"
Using "import" vs. "from X import"
我正在研究 Head First Python,这里有一个例子:
from datetime import datetime
odds = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59 ]
right_this_minute = datetime.today().minute
#if right_this_minute in odds:
#print("This minute seems a little odd.")
#else:
#print("Not an odd minute.")
现在如果我用 "import datetime" 代替 "from datetime import datetime",解释器会给我一个错误:
right_this_minute = datetime.today().minute
AttributeError: module 'datetime' has no attribute 'today'
我不明白为什么 "from datetime import datetime" 有效,但 "import datetime" 无效。我已经浏览了一些关于此的 Whosebug 问答,但我显然遗漏了一些东西。
如有任何建议,我们将不胜感激。
首先,有两个"things"叫做datetime
:模块和模块定义的class
您使用的两个导入选项具有不同的行为。
当你运行:
from datetime import datetime
第一个是模块,第二个是class。 Python 从模块中只导入一个 class (datetime
)。从此,Python就理解为datetime
指的是class。
当你运行:
import datetime
您导入了整个模块,因此 Python 将理解 datetime
为模块。要访问 class datetime
,您需要使用 datetime.datetime
.
我正在研究 Head First Python,这里有一个例子:
from datetime import datetime
odds = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59 ]
right_this_minute = datetime.today().minute
#if right_this_minute in odds:
#print("This minute seems a little odd.")
#else:
#print("Not an odd minute.")
现在如果我用 "import datetime" 代替 "from datetime import datetime",解释器会给我一个错误:
right_this_minute = datetime.today().minute AttributeError: module 'datetime' has no attribute 'today'
我不明白为什么 "from datetime import datetime" 有效,但 "import datetime" 无效。我已经浏览了一些关于此的 Whosebug 问答,但我显然遗漏了一些东西。
如有任何建议,我们将不胜感激。
首先,有两个"things"叫做datetime
:模块和模块定义的class
您使用的两个导入选项具有不同的行为。
当你运行:
from datetime import datetime
第一个是模块,第二个是class。 Python 从模块中只导入一个 class (datetime
)。从此,Python就理解为datetime
指的是class。
当你运行:
import datetime
您导入了整个模块,因此 Python 将理解 datetime
为模块。要访问 class datetime
,您需要使用 datetime.datetime
.