Python训练第三十天

DAY 30 模块和库的导入

知识点回顾:

  1. 导入官方库的三种手段
  2. 导入自定义库/模块的方式
  3. 导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致)

总结:导入包的核心就是找到目录,只有理解了python解释器的目录关系,才能导入包,如果py文件中导入失败,不妨多调试几次路径即可

(一)导入官方库

所谓学习python就是学习python常见的基础语法+学习你所处理任务需要用到的第三方库:

标准导入- 导入整个库

复制代码
import math
print("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")
  • 从库中导入特定项

当使用from语法从库中导入特定的函数或类时,这些函数或类就可以在代码中直接使用,不需要添加模块名作为前缀。因为在导入时没有包括模块的完整路径,前面也不能加上库名

复制代码
from math import pi, sqrt
 
print("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")
  • 非标准导入-整个库

import math和 from math import *的区别:使用from math import *代码尽管导入之后可以不使用前缀math.,但容易造成命名空间的污染和减少明确性,很难判断一个特定的函数是来自 `math` 模块还是其他模块

复制代码
from math import *
 
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")

(二)模块和包的定义

模块(Module):

本质:以 .py 结尾的单个文件,包含Python代码(函数、类、变量等)。

作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。

包(Package)在python里,包就是库:

本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包。

核心特征:包的根目录下必须包含一个 init.py 文件(可以为空),用于标识该目录是一个包。

①场景: main.py 在根目录,circle.py 在子目录 model/

目录结构:

复制代码
项目根目录/
├── main.py
└── model/
    ├── __init__.py   (必需添加,将 model 目录标记为一个可导入的包)
    └── circle.py

项目根目录/

├── circle2.py

└── utils/

├── init.py (必需添加,将 model 目录标记为一个可导入的包)

└── circle.py

└── model/

└── main.py

复制代码
运行方式
python -m model.main
 
 
如果直接使用python model/main.py,会报错,
当使用 python -m model.main 时,Python 会将当前目录(即项目根目录)添加到 sys.path 的开头

(三)源代码的查看

如果第三方库是纯python写的,往往在函数上按住ctrl即可进入函数内部查看源代码。但是很多第三方库为了性能,底层是用其他语言写的,这里我们计算机视觉库OpenCV为例。

OpenCV核心是用C++编写的(C++可以显著提高性能),但它通过Python等其他语言的接口(bindings)使得这些功能可以在Python环境中被调用。这些接口是通过一种叫做Python/C API的技术实现的,其中C++的功能被封装成Python模块,使得Python用户可以像使用纯Python编写的库一样使用OpenCV。OpenCV的核心是用C++编写,并且已经编译成二进制文件,编译后的二进制文件可以在不同操作系统上运行,Python中的用户通常不能直接看到方法的源代码。

尽管在Python中不能直接看到C++的源代码实现,用户可以参考官方文档来了解各个函数和方法的用法。如果需要查看实现细节,可以访问OpenCV的GitHub仓库(https://github.com/opencv/opencv)查看C++源代码。

@浙大疏锦行

相关推荐
昭昭日月明2 分钟前
LangChain 生态:从链到代理,开发者需要掌握的三大核心
python·langchain·agent
Csvn9 分钟前
🐍 Day 8:面向对象编程
后端·python
程序员天天困11 分钟前
向量检索不准怎么办:混合检索与 Rerank 重排序召回优化实战
后端·python·ai编程
alphaTao2 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
苏灿烤鱼2 小时前
当 AI Agent 遇见真实科学环境:深度拆解 Scientific Agent Skills,把"聊天机器人"变成"AI 科学家"
python·开源·agent
张文君2 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
Interview Aid1122 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
CoderIsArt9 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
AI情绪识别开源12 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试