首页 >

谁能透彻地讲讲Python模块的检索顺序 – python – 前端,python 存取txt

python基础语法手册,python 批量注释,python 网页打开时间,python海龟画出z,python国二考试分值,云端python,python ormapping,python if效率,python怎么考研,python阴影求解,python 存取txt谁能透彻地讲讲Python模块的检索顺序 - python - 前端,python 存取txt

搜索顺序应该是?

内置模块 -》主目录 -》PYTHONPATH环境变量 -》标准库 -》.pth文件指定的内容

所以如果主目录里有一个自定义的模块文件文件,应该会先加载,然后后面标准库的模块文件可能就不会加载了,也就是隐藏了。

还是实验一下:

创建一个sys.py在主目录下,以下是在windows的py3.5上实验的,sys.py内容:

# filename sys.py in current working directory def func(): print(‘This is my own sys.py‘) func()

这样按理说在cmd中运行python然后import sys,会打印一句:

This is my own sys.py

但事实上并不会,还是加载了built-in的sys,直接输入sys能看到:

>>> sys <module ‘sys‘ (built-in)>

既然是sys是内置的,试试os,同样的方法,一样的结果:

>>> os <module ‘os‘ from ‘C:\\Program Files\\Python35\\lib\\os.py‘>

因为os在标准库里面,应该是当前目录下的os.py会覆盖了(隐藏了)库里的os模块才对。最后试一下__future__,才是可以的:

>>> import __future__ this is my __future__

这是为什么?偶想应该是在运行python命令时,os作为一些初始化工作时被导入了,所以其实再手动import os,根本没有重载。如何证明呢?偶看到python手册里有说,site.py在初始化的时候会自动运行,所以先看看他的内容,确实有:

import sys

import os

那么偶在这两句之前加一句,并保存退出:

import __future__

退出cmd中的python,重新运行python命令,再导入试试:

>>> import __future__

这次就不会输出:

this is my __future__

了,即使偶在当前目录定义了这个__future__.py,所以说的确是已经加载过了。


谁能透彻地讲讲Python模块的检索顺序 - python - 前端,python 存取txt
  • python扫描excel用哪个库 - python - 前端,python aes 解密
  • python扫描excel用哪个库 - python - 前端,python aes 解密 | python扫描excel用哪个库 - python - 前端,python aes 解密 ...

    谁能透彻地讲讲Python模块的检索顺序 - python - 前端,python 存取txt
  • 如何解决很闷和色彩的油腻感 - python - 前端,python相对路径写法
  • 如何解决很闷和色彩的油腻感 - python - 前端,python相对路径写法 | 如何解决很闷和色彩的油腻感 - python - 前端,python相对路径写法 ...

    谁能透彻地讲讲Python模块的检索顺序 - python - 前端,python 存取txt
  • easyguimsgbox出现问题应该如何解决 - python - 前端,python 输入到excel表格数据
  • easyguimsgbox出现问题应该如何解决 - python - 前端,python 输入到excel表格数据 | easyguimsgbox出现问题应该如何解决 - python - 前端,python 输入到excel表格数据 ...