Python训练Day30
模块和库的导入
- 导入官方库的三种手段
- 导入自定义库/模块的方式
- 导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致)
1.1标准导入:导入整个库
# 方式1:导入整个模块
import mathprint("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")
1.2 从库中导入特定项
当使用from语法从库中导入特定的函数或类时,这些函数或类就可以在您的代码中直接使用,不需要添加模块名作为前缀。因为在导入时没有包括模块的完整路径,前面也不能加上库名。
# 方式2:导入特定的函数或变量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")
1.3 非标准导入:导入整个库
如下,●这将导入`math`模块中定义的所有公开函数和变量。
●和上述from同理,直接调用`sin()`、`cos()`等,而无需`math.`前缀。
from math import *print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")
模块、包的定义
模块(Module)
- 本质:以 `.py` 结尾的**单个文件**,包含Python代码(函数、类、变量等)。
- 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。
包(Package)
在python里,包就是库
- 本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包。
- 核心特征:包的根目录下必须包含一个 `__init__.py` 文件(可以为空),用于标识该目录是一个包。
使用场景:
若编写一个计算圆面积的代码并保存为 `circle.py`,这个文件就是一个模块。使用时通过 `import circle` 导入模块,调用其中的函数(如 `circle.calculate_area(5)`)。
IDE(如 VSCode 或 PyCharm)通常会将你打开的项目文件夹设为“根目录”(或者说,运行时的工作目录)。Python 在导入模块时,会从这个根目录(以及其他一些标准位置和脚本所在的目录)开始查找。
场景1: main.py 和 circle.py 都在同一目录
项目根目录/
├── main.py
└── circle.py
- 模块导入 :因为它们在同一层, main.py 找 circle.py 很方便,直接喊一声名字就能找到。所以在 main.py 里可以直接写 from circle import calculate_area 来导入 circle.py 里的 calculate_area 函数。
- 运行方式 :直接在终端运行 python main.py 就行,就像在书架所在的房间里直接拿起 main.py 这本书开始读。
场景2: main.py 和 circle.py 都在根目录的子目录 model/ 下
项目根目录/
└── model/├── __init__.py (推荐添加,将 model 目录标记为包)├── main.py└── circle.py
- 模块导入 :虽然它们在同一个格子里,但 main.py 找 circle.py 还是直接喊名字就行,所以导入语句还是 from circle import calculate_area 。
- 运行方式 :有两种方式。一是在项目根目录下运行 python model/main.py ,就像在书架所在的房间里告诉别人去拿 model 格子里的 main.py 这本书;二是先进入 model 文件夹( cd model ),再运行 python main.py ,就像自己走到 model 格子前拿起 main.py 读。
场景3: main.py 在根目录, circle.py 在子目录 model/ 下
项目根目录/
├── main.py
└── model/├── __init__.py (必需添加,将 model 目录标记为一个可导入的包)└── circle.py
- 模块导入 : main.py 要找 circle.py 就不能只喊名字了,得说清楚在哪个格子里,所以导入语句要写成 from model.circle import calculate_area 。
- 运行方式 :直接在终端运行 python main.py 。但如果 circle.py 在更复杂的目录结构里,直接用 python model/main.py 可能会报错,这时可以用 python -m model.main ,Python 会把项目根目录加到搜索路径的开头,这样就能找到 model 文件夹里的 circle.py 了。
@浙大疏锦行