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

@浙大疏锦行

相关推荐
黄雪超2 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice2 小时前
对象的finalization机制Test
java·开发语言·jvm
思则变3 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
lijingguang3 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#
漫谈网络3 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
¥-oriented3 小时前
【C#中路径相关的概念】
开发语言·c#
CoderCodingNo3 小时前
【GESP】C++四级考试大纲知识点梳理, (7) 排序算法基本概念
开发语言·c++·排序算法
恋猫de小郭4 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
JosieBook4 小时前
【Java编程动手学】使用IDEA创建第一个HelloJava程序
java·开发语言·intellij-idea
Thomas_YXQ4 小时前
Unity3D DOTS场景流式加载技术
java·开发语言·unity