Python 从入门到精通
第 8 / 36 篇
从环境安装和基础语法出发,逐步学习工程实践、自动化、数据处理与 Web 开发。
-
01
Python 怎么装、怎么用 -
02
变量、数字和字符串 -
03
列表:把一组数据放在一起 -
04
元组、集合和字典 -
05
条件判断:让程序做选择 -
06
循环:重复的事交给程序 -
07
函数:把代码整理成可复用的块 -
08
模块与包:拆分你的程序正在阅读 -
09
输入、输出与字符串格式化 -
10
文件读写:保存程序的数据 -
11
异常处理:程序出错时怎么办 -
12
基础阶段练习:命令行记账本 -
13
类和对象:面向对象入门 -
14
继承、组合与特殊方法 -
15
迭代器与生成器 -
16
列表推导式与生成器表达式 -
17
装饰器:给函数增加能力 -
18
上下文管理器与 with -
19
类型标注与 dataclass -
20
正则表达式:从文本中找规律 -
21
日期、时间与时区 -
22
日志与调试 -
23
虚拟环境与依赖管理 -
24
测试:让修改不再提心吊胆 -
25
网络请求:用 Python 调用 API -
26
网页解析与合规采集 -
27
操作 Excel、CSV 与批量文件 -
28
SQLite:给程序加一个数据库 -
29
数据分析入门:NumPy 与 Pandas -
30
画图:把数据变得直观 -
31
Flask 入门:做一个小网站 -
32
异步编程:同时处理多项任务 -
33
线程、进程与并发选择 -
34
性能分析与优化 -
35
项目结构、配置与发布 -
36
综合项目:从需求到上线
上一篇学了函数,把代码打包成块。但一个程序会越来越大,几千行全塞一个文件里谁也受不了。这就要说到 Python 的组织方式:模块(module)和包(package)。顺带,这也是你第一次接触”别人写好的代码”——标准库和第三方库。
什么是模块
模块就是一个 .py 文件。你把相关函数放进一个文件,它就是模块,别的文件可以导入它。比如你写了个 math_utils.py:
# math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
然后在另一个文件里导入使用:
# main.py
import math_utils
print(math_utils.add(2, 3)) # 5
print(math_utils.multiply(2, 3)) # 6
import math_utils 会把整个模块加载进来,用 模块名.函数名 调用。
导入的几种写法
# 写法 1:导入整个模块(推荐,最清晰)
import math
print(math.sqrt(16)) # 4.0
# 写法 2:只导入某个名字
from math import sqrt
print(sqrt(16)) # 直接用,不用加 math.
# 写法 3:起别名(模块名太长时)
import numpy as np
print(np.__name__) # numpy
# 写法 4:一次导入多个
from math import sqrt, pi
print(pi) # 3.141592653589793
注意 from math import *(导入全部)不推荐——会把一堆名字塞进当前命名空间,容易冲突,代码也不好查来源。
标准库:Python 自带的百宝箱
Python 安装时就带了一大堆模块,叫标准库,不用装直接用。常用的几个:
import math
print(math.floor(3.7)) # 3 向下取整
print(math.ceil(3.2)) # 4 向上取整
import random
print(random.randint(1, 6)) # 随机 1-6(掷骰子)
print(random.choice(["石头", "剪刀", "布"]))
import os
print(os.getcwd()) # 当前目录
print(os.listdir(".")) # 当前目录的文件列表
import datetime
today = datetime.date.today()
print(today) # 2026-08-14
用之前先查文档(Python 官方文档),标准库覆盖了文件、网络、时间、加密、压缩等等,很多需求不用自己造轮子。
第三方库:pip 安装
标准库之外的库,用 pip 安装。打开终端(命令行):
pip install requests
pip install beautifulsoup4
装完就能 import:
import requests
resp = requests.get("https://www.nsn0704y.cn")
print(resp.status_code) # 200
国内下载慢可以换镜像源(后面讲虚拟环境那篇会细说):
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
if __name__ == “__main__”:这是啥?
你会在很多 Python 文件末尾看到这行,它是干什么的?
# tool.py
def main():
print("工具开始运行...")
if __name__ == "__main__":
main()
原理:每个模块都有个内置变量 __name__。当文件直接运行时,它是 "__main__";当被import时,它是模块名("tool")。
所以这行的意思是:只有直接运行这个文件时才执行下面的代码,被导入时只提供函数、不自动跑。这样别人 import 你的模块不会触发一堆副作用。
包:模块的文件夹
模块多了,用文件夹归类,这个文件夹就是包。文件夹里放一个 __init__.py(可以是空文件,标记”这是包”):
myproject/
├── main.py
└── utils/
├── __init__.py
├── file_ops.py
└── text_ops.py
# main.py
from utils.file_ops import read_config
from utils.text_ops import clean_text
导入路径用点号:utils.file_ops 表示 utils 包里的 file_ops 模块。目录结构清晰,项目一大就这么组织。
新手坑
坑 1:文件名和标准库重名。你建了个 random.py,再 import random 导入的是你自己的文件,标准库被”遮蔽”了,各种诡异报错。文件名避开常见库名。
坑 2:循环导入。a.py import b,b.py 又 import a,两个文件互相依赖会报 ImportError: cannot import name。解决办法:把公共代码抽到第三个模块。
坑 3:import 写在函数里。能跑但不规范,模块导入应该集中在文件顶部,一眼能看到依赖。
小结
- 模块 = .py 文件;包 = 带
__init__.py的文件夹 - 导入:
import 模块、from 模块 import 名字、import 模块 as 别名 - 标准库直接用(math/random/os/datetime…),第三方库先
pip install if __name__ == "__main__":控制”直接运行才执行”- 文件名别和标准库重名,避免循环导入
练习
- 用 random 模块写一个”随机点名器”:从名单里随机抽一个人
- 把你上一篇写的函数(摄氏转华氏)存成
temp_utils.py,再写个main.py导入并调用 - 思考:在
tool.py里print(__name__),直接运行和 import 它,分别输出什么?为什么这样设计有用?