详解Python中 import 关键词是如何实现的

简介: import在python中是用来导入模块及第三方库的,那么为什么它具有这样的功能呢?

概念:

模块(module):其实就是一个py文件,里面定义了各种变量,函数,类。

模块除了内建模块(可以用过dir(__builtins__)查看有哪些内建函数),就是非内建模块,这一部分模块就需要用import导入。非内建模块经常需要按照第三方库,一般第三方模块在"安装路径\Python\Python36\Lib\site-packages"目录下。

包(package):一个有层次结构的文件目录,里面包含了模块和一些子包,要求包中必须带有一个__init__.py文件。

导入方法:

import selenium

不难理解,该过程把selenium.py文件的全部内容加载到内存。

在导入模块时。模块所在文件夹将自动生成一个对应的__pycache__\selenium.cpython-36.pyc文件

怎么加载?——加载方式和用法

方式:

1.import package

读这个包的__init__.py,也就是说导入包的本质是执行包下面的__init__.py文件,执行结束后会包名的目录下生成一个"__pycache__ / __init__.cpython-36.pyc" 文件。

2.import module

读整个模块的内容

3.import package1.package2.package3.module4

package读取__init__.py,module读取整个模块内容,按顺序读

注意:因为package是读取__init__.py,所以调用的时候必须在__init__.py有引用的东西才能调用,否则会报错。

从哪里加载?

对于python来说,所有被加载到内存的模块都是放在sys.modules里面,所以执行import时会首先去该列表中查询是否已添加。如果已经在sys.modules中,那就简单了,只需要将该module的name添加到我们正在调用该module的本地空间中。如果还没有放在sys.modules中,就需要在sys.path所有路径的目录中去按顺序查找该模块的文件,这些文件一般后缀为".py"、".pyo"、".pyc"、".pyd"、".dll",找到这些模块后就可以将这些模块添加到sys.modules中,再将module name导入到本地。

相关文章
|
4天前
|
数据可视化 数据挖掘 开发者
import有什么用,python中怎么使用import
import有什么用,python中怎么使用import
29 1
|
5月前
|
API Python
python 详细理解 import ---- openstack自动import class 到 特定命名空间
python 详细理解 import ---- openstack自动import class 到 特定命名空间
53 0
|
6月前
|
Python
89 python高级 - import导入模块
89 python高级 - import导入模块
27 0
|
7月前
|
Python
python flask 后端报错 ImportError: cannot import name ‘cached_prope‘
问题python flask 后端报错 ImportError: cannot import name ‘cached_prope‘flask程序启动但抛出该错误,是因为werkzeug 版本过高,需要降低版本即可 解决:一般这种情况是需要注意第三方库版本的对应,werkzeug需要0.16.0 版本时 flask的版本应该时1.x.x 的版本,不能是2.x过高的版本。
68 0
|
4天前
|
Python
[Python] 如何用import导入模块
[Python] 如何用import导入模块
27 0
|
6月前
|
JSON API 数据格式
使用Python获取快手关键词搜索api
使用Python获取快手关键词搜索api
|
7月前
|
TensorFlow 算法框架/工具 Python
python报错:ImportError: cannot import name ‘_tf_stack‘ from ‘tenso
ImportError: cannot import name ‘_tf_stack’ from ‘tensorflow.python’本来keras和tensorflow用得好好的,忽然今天报错导入包得时候直接报错。在网上找了很多方法,但是用处都不大,尝试了很多遍都不行。于是尝试将tensorflow和keras卸载重装。(需要彻底卸载,pip命令后还需要删除文件夹中得几个文件夹,也就是...
71 1
|
4天前
|
JSON API 数据格式
关键词搜索拼多多商品列表数据接口Python
关键词搜索拼多多商品列表数据接口Python
25 0
|
4天前
|
JSON Java API
关键词搜索1688商品数据接口Python
关键词搜索1688商品数据接口Python
37 2
|
4天前
|
C++ Python
python工程中import要点提炼
python工程中import要点提炼