//作品和输出是2017-03-13 14:14:45.157593; 然后我可以深入到分钟等等。
from datetime import datetime
print(datetime.today())
//作品和输出是2017-03-13
import datetime
print(datetime.date.today())
//两者在一起它不起作用。 输出错误:AttributeError:module' datetime'没有属性'今天'
from datetime import datetime
import datetime
print(datetime.today())
print(datetime.date.today())
谢谢, 大卫
答案 0 :(得分:5)
只有一个模块:datetime
,其中包含一个类datetime
。
如果您执行import datetime
,则datetime
是模块,datetime.datetime
是该类。
如果您执行from datetime import datetime
,则datetime
是该类,并且您没有该模块的名称。
如果同时执行这两项操作,则datetime
是最后执行的一项,因为名称datetime
由其他import
语句重新分配。
这种混淆是为什么PEP 8为模块名称和类名建议不同的外壳(根据PEP 8,该类应该被命名为DateTime
)但是在PEP 8之前datetime
已经在标准库中了写入。
答案 1 :(得分:2)
1。)没有2个不同的模块。 import datetime
正在导入datetime.py,它是包含date
和datetime
类的实际文件。如果这样做,则导入整个文件,而如果执行from datetime import datetime
,则只导入该文件中的datetime类。
2。)正如@Apero所说,导入datetime(文件)实际上会覆盖你导入的类,这就是你得到错误的原因。在文件级别导入时,解释器基本上忽略了行from datetime import datetime
。
答案 2 :(得分:1)
这很简单
from foo import foo # makes the foo namespace available
import foo # also makes the foo namespace available, but overwrites the previous one
它与:
相同foo = 1
foo = 3
或
def foo():
...
def foo():
...
或
Class Foo(...):
...
Class Foo(...):
...
Python从上到下读取,因此所有与写入或导入的名称相同的名称都会覆盖先前声明/导入的名称。