python学习之路7
一、模块
定义:模块就是实现了某个功能的代码集合,一个模块可以定义函数,类和变量。模块还可以包括可运行的代码。本质就是.py结尾的python文件。
优点:代码重用,可维护性高
语法:
导入单一模块:
1 import module_name
导入多个模块
import module_name1,module_name2,......
调用符号:
import sys print(sys.path)
模块与文件关系:一个.py文件即一个模块,反之亦然。
1 对于一个模块test有如下定义: 2 3 模块的文件名:test.py 4 模块名:test 5 模块导入:import test
二、模块的名称空间(作用域)
定义:名称空间就是一个从名称到对象的关系映射,每个模块都定义了自己的名称空间,即每个模块有自己独立的作用域。
分类:python程序在运行时具有三个名称空间,内建(__builtin__模块),全局,局部,python解释器先加载内建名称空间,后加载全局名称空间,最后加载局部名称空间。
名称空间与作用域关系:从内往外找,以较内层作用域为准
例如
module_a.py
1 x=1 2 3 def test(): 4 print('from the module module_a')
module_b.py
1 x=2 2 3 def test(): 4 print('from the module module_b')
test.py
1 import module_a 2 import module_b 3 4 print(module_a.x) 5 print(module_b.x) 6 print(module_a.x+module_b.x) 7 module_a.test() 8 module_b.test() 9 10 运行结果: 11 1 12 2 13 3 14 from the module module_a 15 from the module module_b
例如
module_a.py
1 x=1 2 3 def test(): 4 print('from the module module_a',x)
test.py
1 import module_a 2 3 x=2 4 print(module_a.x) 5 module_a.x=10 6 print(module_a.x) 7 8 #运行结果 9 1 10 10
三、模块的搜索路径和路径搜索
模块导入需要经历路径搜索的过程,路径搜索就是在你预定义的搜素路径里查找你想要导入的模块
如果在预定义路径为找到,抛出异常(pycharm的特殊功能除外)
自定义模块b在父级目录里(如有特殊需要可以使用sys.path.insert()方法)
解决方式:将当前文件路径父级目录的父级目录添加到sys.path里
1 import sys,os 2 3 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 4 5 import b 6 b.test()
四、from-import语句和as
from module_name import xxx as xxx_xx
五、包
定义:包就是一组模块的集合。本质就是一个目录(必须带有一个__init__.py文件)
包与目录的区别:包必须包含一个空文件(也可以有内容)__init__
六、import原理
导入模块的本质就是把python文件解释一遍。
导入包的本质就是执行该包下的__init__.py文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理