二、模块导入学习笔记

二、模块导入学习笔记

2026-02-21
Python基础
type
Post
status
Published
date
Feb 21, 2026
slug
python-module-import-notes-2
summary
我经常搞不清 import xxxfrom xxx import yyy 的区别,也不知道什么时候该用 as
tags
category
Python基础
icon
password
💡 学习感悟:我经常搞不清 import xxxfrom xxx import yyy 的区别,也不知道什么时候该用 as

1. 基本导入方式

1.1 import 模块名

📝 我的理解import math 就像是把工具箱搬回家——使用时需要说 "math 工具箱里的 xx 工具"。

1.2 from 模块 import 名称

📝 我的理解from math import pi 就像是只把需要的工具拿出来——直接就能用,不用翻工具箱。

1.3 import 模块 as 别名

📝 我的理解as 就像是起外号——numpy 太长,就叫它 np,打字快多了!

1.4 from 模块 import 名称 as 别名

📝 我的理解:当模块名和类名相同时,用 as 给类起个别名,避免混淆。

2. 批量导入

2.1 导入所有内容

⚠️ 踩坑from xxx import * 虽然方便,但会导入所有内容,容易覆盖已有变量,不推荐使用!

2.2 导入多个内容

📝 我的理解:一行导入多个,用逗号分隔,简洁明了。

3. 相对导入与绝对导入

3.1 绝对导入

📝 我的理解:绝对导入就像是完整地址——从省市区到街道门牌号,不会迷路。

3.2 相对导入

📝 我的理解:相对导入就像是邻居串门——. 是隔壁,.. 是楼上,不用写完整地址。

3.3 相对导入规则

⚠️ 注意:入口文件(直接运行的文件)不能使用相对导入!

4. 导入的执行过程

4.1 导入时发生了什么


4.2 模块缓存

📝 我的理解:模块就像是单例模式——第一次导入时创建,之后都用同一个,节省资源。

5. 条件导入

5.1 根据条件导入

📝 我的理解:条件导入就像是因地制宜——Windows 用 Windows 的工具,Linux 用 Linux 的工具。

5.2 尝试导入

📝 我的理解try/except 导入就像是备胎方案——有就用,没有也能继续跑。

6. 踩坑记录

6.1 导入循环

⚠️ 踩坑:A 导入 B,B 又导入 A,会导致 ImportError!用延迟导入或重构代码解决。

6.2 命名冲突

⚠️ 踩坑:导入的名称不要和变量名冲突,否则会覆盖!

6.3 导入未定义的内容

⚠️ 踩坑:导入前确认模块中确实有这个名字,否则会 ImportError

7. 核心知识点整理

7.1 导入方式对比

方式
语法
使用方式
适用场景
导入模块
import math
math.pi
常用,避免命名冲突
导入内容
from math import pi
pi
频繁使用某个功能
模块别名
import numpy as np
np.array()
模块名太长
内容别名
from datetime import datetime as dt
dt.now()
避免命名冲突
批量导入
from math import *
pi, sqrt()
⚠️ 不推荐

7.2 相对导入符号

符号
含义
示例
.
当前目录
from . import module
..
上级目录
from .. import module
...
上上级目录
from ... import module

7.3 导入的最佳实践

  1. 标准库第三方库自定义模块(按顺序分组)
  1. 一行导入一个模块,避免 import os, sys
  1. 避免 from xxx import *,容易命名冲突
  1. 需要别名时,使用社区约定(如 np, pd
  1. 入口文件使用绝对导入,包内使用相对导入
推荐云服务

雨云 - 云服务器首选

稳定 · 高速 · 性价比超高

使用优惠码立享折扣,开启你的云端之旅~

一元试用秒级开通24h在线客服

优惠码

zqf
立即访问
Loading...
灵心小窝

灵心小窝

这里不是一个喧闹的地方,只是用来存放一些还不想遗忘的东西。

声明 © 2026 早清风
加载中...