Python模块导入详解
定义
模块:用来从逻辑上组织Python代码(变量、函数、类、逻辑)去实现一个功能。本质就是.py结尾的Python文件。
包:用来从逻辑上组织模块的(可以放一堆模块在目录下)。本质就是一个目录(必须带有一个__init__.py文件)。
导入模块
导入单个:
1 | import 模块名 |
导入多个:
1 | import 模块名 1 ,模块名 2 |
导入模块中所有代码:
1 | from 模块名 import * |
import导入于from 模块名 import *导入在调用上的区别:
1 2 | module.function() function() |
跨目录导入包:
1 2 3 4 5 | import sys print (sys.path) #python会去哪些目录下找模块,是一个列表 Module_Dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #获取到模块目录 sys.path.append(Module_Dir) #把模块目录加到sys.path列表中 import 要导入的模块 |
代码说明
module_test.py
1 2 | def Index(): print ( "Welcome to Index Page." ) |
main.py
# import module_test
from module_test import * #这种是把模块中的代码复制到了这个py脚本中
from module_test import Index as Index_module #如果导入的模块中函数与该py脚本中的函数名一样,使用as别名
def Index():
print("Main Page")
# module_test.Index() #这样调用是不行的
Index()
Index_module()
输出结果如下:
import本质
就是把Python文件解释一遍。
比如我们导入requests模块,requests = requests模块中的所有代码,所以调用的时候需要requests.function()。
1 | import requests |
而使用from导入的时候,是把模块中的代码复制到了这个py脚本中,所以调用的时候直接使用函数。
导入包
导入包的本质是去执行包下的__init__.py文件。
1 | import packagename |
如果调用包中的模块呢?
因为本质是读取__init__.py文件,因此在__init__.py文件写要导入的模块(相对导入)。
1 | from . import 模块名 |
调用的话就是
1 | packagename.模块名.function() |
代码演示
__init__.py:
1 | print ( "in the package" ) |
main.py:
1 | import package |
运行效果:
导入优化
import导入:使用多次模块中的函数的话,会重复找路径的动作,效率会低,因此可以使用from方法导入来优化脚本效率。
1 | module.function() |
模块的分类
- 标准库(也叫内置模块)
- 开源模块(也叫第三方模块)
- 自定义模块
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步