python编程基础知识
发布时间:2025-09-07 00:19       
下面是一份面向上手与进阶的《Python 编程基础知识》速览,覆盖环境、语法、工程化与质量保障等核心要点,拿来就能用。🐍
1)环境与工具
- 建议版本:Python 3.12+(语法与性能更成熟)。
- 虚拟环境:在项目目录创建隔离依赖的环境,避免“全局污染”。
python -m venv .venv # Linux/macOS source .venv/bin/activate # Windows .venv\Scripts\activate pip install -U pip
- 项目元数据:使用
pyproject.toml
(统一工具配置,如格式化、依赖、打包)。 - 常用配套:
ruff
(代码检查与格式化),pytest
(测试),uv
/pip
(装包)。🔧
2)语法与数据模型
- 基本类型:
int
、float
、bool
、str
、None
。容器:list
、tuple
、dict
、set
。 - 切片与推导式:
nums[1:5]
、[x*x for x in nums if x%2==0]
。 - 可变/不可变:
list
可变,tuple
与str
不可变;字典键必须可哈希。 - 字符串:
f"hello {name}"
可读性强,注意编码统一为utf-8
。
3)控制流与模式匹配
-
基本结构:
if/elif/else
、for/while
、break/continue
。 -
枚举与迭代:
for i, v in enumerate(items)
、for k, v in d.items()
。 -
结构化模式匹配(3.10+):
def http_status(msg: dict) -> str: match msg: case {"code": 200, "data": data}: return f"OK: {len(data)}" case {"code": c} if 400 <= c < 500: return "Client Error" case _: return "Unknown"
适合对嵌套结构做“一语道破”的分支判断。✅
4)函数与类型标注
- 定义:
def fn(x: int, *, y: int = 0) -> int:
;*
后为仅限关键字参数。 - 可变参数:
*args
、**kwargs
。 - 文档字符串:第一行简述用途,必要时补充参数与返回值。
- 类型系统(3.9+):内置泛型写法
list[str]
、联合类型int | str
、typing.Self
(3.11+)提升可读性与可维护性。 - 装饰器(了解):用于日志、缓存、鉴权等横切逻辑。
5)异常与上下文
from pathlib import Path
def load_text(p: str) -> str:
try:
with open(p, "r", encoding="utf-8") as f:
return f.read()
except FileNotFoundError as e:
raise RuntimeError(f"file not found: {p}") from e
try/except/else/finally
完整掌握;善用with
管理资源。- 并发异常(3.11+)支持
except*
(了解即可)。
6)模块化与标准库精选
- 目录即包:
pkg/
内有__init__.py
则可导入。 - 相对导入:
from .utils import fn
适合包内结构。 - 常用标准库:
pathlib
(路径)、dataclasses
(数据模型)、json
、collections
、itertools
、functools
、logging
、asyncio
。 - 建议默认用
pathlib.Path
替代裸字符串路径。📦
7)面向对象与数据类
from dataclasses import dataclass
@dataclass(slots=True)
class User:
id: int
name: str
@dataclass
自动生成构造与比较;slots=True
可降内存、提访问性能。- 组合优于继承;接口约束可用
typing.Protocol
。
8)文件与文本处理
from pathlib import Path
import json
p = Path("data.json")
data = json.loads(p.read_text(encoding="utf-8"))
p_out = Path("out.txt")
p_out.write_text("\n".join(sorted(data.keys())), encoding="utf-8")
- 统一
utf-8
;Path.read_text/write_text
简洁安全。 - 大文件使用流式处理,避免一次性读入内存。📄
9)并发与性能
- I/O 密集:优先
asyncio
或concurrent.futures.ThreadPoolExecutor
。 - 计算密集:
multiprocessing
、C 扩展或