python打卡day30

模块和库的导入
知识点回顾:

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

作业:自己新建几个不同路径文件尝试下如何导入

python的学习就像是学一点常见的基础语法,再去针对性地学习处理任务需要用到的库,库的导入很简单:

  • 标准导入整个库,import xxx
  • 从库中导入特定项,from xxx import yyy
  • 非标准导入整个库,from xxx import *(和上面导入库中特定项一样,用的时候可以不用加库的前缀)

------------------------------------------------- 相关概念辨析一下 ------------------------------------------------------

模块(Module)

  • 本质:以**`.py` 结尾的单个文件**,包含Python代码(函数、类、变量等)
  • 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护

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

  • 本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包
  • 核心特征:包的根目录下必须包含一个 `init.py` 文件(可以为空),用于标识该目录是一个包

  • IDE通常会将你打开的项目文件夹设为"根目录"(或者说,运行时的工作目录)。Python 在导入模块时,会从这个根目录(以及其他一些标准位置和脚本所在的目录)开始查找,具体操作中,模块导入可以按目录层级分为以下三种类型:

1.同级目录导入

  • 场景:当前脚本和要导入的模块文件在同一个目录下
  • 方法:直接使用上面提到的三种导入库的方式

project/

├── main.py # 当前脚本

└── utils.py # 要导入的模块

python 复制代码
# main.py 中导入 utils.py
import utils
utils.some_function()

# 或使用 from 语法
from utils import some_function
some_function()

2.子目录导入

  • 场景:要导入的模块位于当前脚本的子目录中
  • 方法:需要将子目录转换为 Python 包,再通过包路径导入

project/

├── main.py

└── subdir/

├── init.py # 空文件,标识这是一个包

└── utils.py # 子目录中的模块

python 复制代码
# main.py 中导入子目录模块
from subdir import utils
utils.some_function()

# 或者只导入相关函数
from subdir.utils import some_function
some_function()

3.跨目录导入

  • 场景:要导入的模块位于完全不同的目录层级(如父目录、兄弟目录等)

  • 方法:需动态修改 sys.path 或使用绝对导入(Python 3.3+ 支持命名空间包)

  • project/

    ├── parent_dir/

    │ └── utils.py

    └── child_dir/

    └── main.py # 需要导入 ../parent_dir/utils.py

python 复制代码
# main.py 中动态添加父目录到 Python 路径
import sys
import os

# 获取父目录路径并添加到 sys.path
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)

# 现在可以导入父目录中的模块
from parent_dir import utils
utils.some_function()

直接在终端运行python -m child_dir.main也可以将父目录路径添加到sys.path

@浙大疏锦行

相关推荐
同学小张12 小时前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native
DanCheng-studio13 小时前
网安毕业设计简单的方向答疑
python·毕业设计·毕设
踢球的打工仔13 小时前
PHP面向对象(7)
android·开发语言·php
轻抚酸~14 小时前
KNN(K近邻算法)-python实现
python·算法·近邻算法
独行soc15 小时前
2025年渗透测试面试题总结-264(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
汤姆yu16 小时前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
Yue丶越16 小时前
【C语言】字符函数和字符串函数
c语言·开发语言·算法
如何原谅奋力过但无声16 小时前
TensorFlow 1.x常用函数总结(持续更新)
人工智能·python·tensorflow
翔云 OCR API16 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
V***u45316 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言