我有一个包含三个文件的文件夹:
你知道吗时间.py以及日期时间.py完全相同:
def ticks_ms():
return 5
什么时候测试.py看起来像这样:
import datetime as t
print(t.ticks_ms())
打印5张。如果我把它改成:
import time as t
print(t.ticks_ms())
我得到:
AttributeError: module 'time' has no attribute 'ticks_ms'
为什么我可以隐藏datetime模块而不是time模块?你知道吗
因为Python将首先搜索内置模块(用C实现),然后再搜索普通的
.py
文件(在不同的位置,从cwd
开始,请参阅sys.path
的内容)。你知道吗您可以通过检查
sys.meta_path
看到这一点,其中包含在发生模块导入时查询的查找器(在sys.modules
中找不到的模块):这个列表中的第一个是
BuiltinImporter
,顾名思义,它负责查找内置模块。你知道吗时间模块是内置的(请参见
sys.builtin_module_names
了解这些模块的列表):在执行
time.py
搜索之前找到。而datetime.py
不是:因此当前工作目录中的
datetime.py
会屏蔽它(PathFinder
通过查看sys.path
中列出的条目来查找datetime.py
)。你知道吗是的,您可以重新排序
sys.meta_path
中的查找程序,并将PathFinder
放在第一位,从而导致time.py
被找到,但请不要这样做(除非您只是在试验:-)。你知道吗相关问题 更多 >
编程相关推荐