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

@浙大疏锦行

相关推荐
apcipot_rain6 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A6 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持7 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang7 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰8 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc9 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
蜗牛一步步往上爬11 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
羲云网络12 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
张张123y13 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶15 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划