文章目录
-
- 一、Python 简介
- 二、Python 安装步骤
-
- 2.1 Windows 系统安装与环境配置
-
- 2.1.1 下载与安装
- 2.1.2 手动配置环境变量(关键步骤)
- 2.1.3 验证安装
- 2.1.4 环境变量配置常见问题
- 2.1.5 多版本Python共存管理
- 2.2 macOS 系统安装
- 2.3 Linux 系统安装
- 2.4 虚拟环境配置(推荐)
- 三、Python 基本用法
-
- 3.1 基础语法
- 3.2 控制流程
- 3.3 函数定义
- 3.4 类与对象
- 3.5 文件操作
- 四、Python 高级用法
-
- 4.1 装饰器
- 4.2 生成器与迭代器
- 4.3 上下文管理器
- 4.4 元类
- 4.5 异步编程
- 4.6 并发编程
- 五、Python 原理架构图
-
- 5.1 Python 执行流程架构图
- 5.2 Python 对象模型架构图
- 5.3 Python 内存管理架构图
- 5.4 Python 模块导入机制流程图
- 5.5 Python 异步编程架构图
- 5.6 架构关键点总结表
- 六、Python 最佳实践
-
- 6.1 代码风格(PEP 8)
- 6.2 常用第三方库
- 七、总结
一、Python 简介
Python是一种解释型、面向对象、动态类型的高级编程语言。由Guido van Rossum于1989年发明,1991年首次发布。Python以其简洁优雅的语法、丰富的库生态和广泛的应用领域,成为当今最受欢迎的编程语言之一。 Python的设计哲学强调代码的可读性和简洁性,其核心格言是"简单优于复杂,明确优于隐晦"。
二、Python 安装步骤
2.1 Windows 系统安装与环境配置
2.1.1 下载与安装
步骤一:下载Python
- 访问Python官方网站:https://www.python.org/downloads/
- 选择最新稳定版本(如Python 3.12.x)
- 下载Windows安装包(64位推荐) 步骤二:运行安装程序
1. 双击下载的 .exe 文件
2. 勾选 "Add Python to PATH"(重要!自动配置环境变量)
3. 选择 "Install Now" 或自定义安装路径
2.1.2 手动配置环境变量(关键步骤)
如果安装时忘记勾选 “Add Python to PATH”,或者需要修改配置,请按以下步骤操作: 方法一:通过系统设置配置(推荐) 步骤一:打开环境变量设置
方式1:右键"此电脑" → 属性 → 高级系统设置 → 环境变量
方式2:按 Win+S,搜索"环境变量" → 编辑系统环境变量
方式3:按 Win+R,输入:sysdm.cpl → 高级 → 环境变量
步骤二:添加 Python 路径 在"系统变量"区域,找到 Path 变量,点击"编辑",添加以下两个路径:
# 假设Python安装在默认路径(需替换实际安装路径和用户名)
C:\\Users\\<用户名>\\AppData\\Local\\Programs\\Python\\Python312\\
C:\\Users\\<用户名>\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\
# 或者如果安装在全系统路径
C:\\Python312\\
C:\\Python312\\Scripts\\
说明:
- 第一个路径:让 python 命令全局可用
- 第二个路径:让 pip 命令全局可用 步骤三:重启命令提示符
⚠️ 重要:修改环境变量后,必须关闭所有命令提示符窗口
重新打开 cmd 才能生效
方法二:使用命令行配置(快速)
# 以管理员身份运行 PowerShell,执行以下命令:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\\Python312\\;C:\\Python312\\Scripts\\", "User")
# 验证是否添加成功
$env:Path -split ';' | Select-String "Python"
2.1.3 验证安装
# 打开命令提示符(Win+R 输入 cmd),输入:
python –version
pip –version
# 查看安装路径
where python
where pip
2.1.4 环境变量配置常见问题
| 'python' 不是内部或外部命令 | 环境变量未配置或配置错误 | 检查Path变量是否包含Python路径 |
| python 命令指向 Microsoft Store | Windows默认别名冲突 | 关闭应用执行别名,或修改Path顺序 |
| 修改后仍无法识别 | 未重启命令提示符 | 关闭所有cmd窗口重新打开 |
| 多版本Python冲突 | Path中存在多个Python路径 | 调整路径顺序或使用虚拟环境 |
2.1.5 多版本Python共存管理
# 使用Python Launcher (py.exe) 管理多版本
py -3.12 script.py # 使用Python 3.12运行
py -3.10 script.py # 使用Python 3.10运行
py –list # 列出所有已安装版本
2.2 macOS 系统安装
# 方法一:使用Homebrew(推荐)
brew install python
# 方法二:官网下载安装包
# 下载 .pkg 文件,双击安装
# 验证安装
python3 –version
# 环境变量配置(如需)
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
2.3 Linux 系统安装
# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip
# CentOS/RHEL
sudo yum install python3 python3-pip
# 验证安装
python3 –version
# 环境变量配置(如需)
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
2.4 虚拟环境配置(推荐)
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境
# Windows:
myenv\\Scripts\\activate
# macOS/Linux:
source myenv/bin/activate
# 安装依赖包
pip install package_name
# 退出虚拟环境
deactivate
三、Python 基本用法
3.1 基础语法
# 1. 变量与数据类型
name = "Python" # 字符串
age = 33 # 整数
price = 9.99 # 浮点数
is_active = True # 布尔值
# 2. 数据结构
# 列表(可变)
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
# 元组(不可变)
coordinates = (10, 20)
# 字典(键值对)
person = {"name": "张三", "age": 25}
# 集合(无序不重复)
unique_numbers = {1, 2, 3, 3} # 结果: {1, 2, 3}
3.2 控制流程
# 条件判断
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
# 循环结构
# for循环
for i in range(5):
print(f"第{i+1}次循环")
# while循环
count = 0
while count < 3:
print(count)
count += 1
# 列表推导式(Python特色)
squares = [x**2 for x in range(10)]
3.3 函数定义
# 基本函数
def greet(name):
"""这是一个问候函数"""
return f"你好,{name}!"
# 默认参数
def power(base, exp=2):
return base ** exp
# 可变参数
def sum_all(*args):
return sum(args)
# 关键字参数
def create_profile(**kwargs):
return kwargs
# Lambda表达式
square = lambda x: x ** 2
3.4 类与对象
class Animal:
"""动物基类"""
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
raise NotImplementedError("子类必须实现此方法")
class Dog(Animal):
"""狗类,继承自动物类"""
def speak(self):
return f"{self.name}说:汪汪汪!"
def fetch(self, item):
return f"{self.name}捡回了{item}"
# 使用示例
dog = Dog("旺财", 3)
print(dog.speak()) # 输出:旺财说:汪汪汪!
3.5 文件操作
# 读取文件
with open("input.txt", "r", encoding="utf-8") as f:
content = f.read()
# 写入文件
with open("output.txt", "w", encoding="utf-8") as f:
f.write("Hello, Python!")
# 逐行读取
with open("data.txt", "r") as f:
for line in f:
print(line.strip())
四、Python 高级用法
4.1 装饰器
import functools
import time
# 计时装饰器
def timer(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间: {end–start:.4f}秒")
return result
return wrapper
@timer
def slow_function():
time.sleep(1)
return "完成"
# 带参数的装饰器
def repeat(times):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
for _ in range(times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(times=3)
def say_hello():
print("Hello!")
4.2 生成器与迭代器
# 生成器函数
def fibonacci(n):
"""生成斐波那契数列"""
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# 使用生成器
for num in fibonacci(10):
print(num, end=" ")
# 生成器表达式
even_squares = (x**2 for x in range(10) if x % 2 == 0)
# 自定义迭代器
class Countdown:
def __init__(self, start):
self.current = start
def __iter__(self):
return self
def __next__(self):
if self.current <= 0:
raise StopIteration
self.current -= 1
return self.current + 1
4.3 上下文管理器
from contextlib import contextmanager
# 使用类实现
class DatabaseConnection:
def __init__(self, db_url):
self.db_url = db_url
def __enter__(self):
print(f"连接数据库: {self.db_url}")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("关闭数据库连接")
return False
# 使用装饰器实现
@contextmanager
def timer_context():
start = time.time()
yield
end = time.time()
print(f"代码块执行时间: {end–start:.4f}秒")
# 使用示例
with DatabaseConnection("mysql://localhost/mydb") as db:
print("执行数据库操作")
4.4 元类
# 元类示例
class SingletonMeta(type):
"""单例模式元类"""
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
class Database(metaclass=SingletonMeta):
def __init__(self):
self.connected = False
# 测试单例
db1 = Database()
db2 = Database()
print(db1 is db2) # True
4.5 异步编程
import asyncio
# 异步函数
async def fetch_data(url):
print(f"正在获取: {url}")
await asyncio.sleep(1) # 模拟IO操作
return f"{url}的数据"
async def main():
# 并发执行
tasks = [
fetch_data("url1"),
fetch_data("url2"),
fetch_data("url3")
]
results = await asyncio.gather(*tasks)
for r in results:
print(r)
# 运行异步代码
asyncio.run(main())
4.6 并发编程
import threading
import multiprocessing
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
# 多线程
def worker(n):
return n ** 2
with ThreadPoolExecutor(max_workers=4) as executor:
results = list(executor.map(worker, range(10)))
# 多进程
with ProcessPoolExecutor(max_workers=4) as executor:
results = list(executor.map(worker, range(10)))
五、Python 原理架构图
5.1 Python 执行流程架构图
#mermaid-svg-dW8NhFRlrh66cgA3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-dW8NhFRlrh66cgA3 .error-icon{fill:#552222;}#mermaid-svg-dW8NhFRlrh66cgA3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dW8NhFRlrh66cgA3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dW8NhFRlrh66cgA3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dW8NhFRlrh66cgA3 .marker.cross{stroke:#333333;}#mermaid-svg-dW8NhFRlrh66cgA3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dW8NhFRlrh66cgA3 p{margin:0;}#mermaid-svg-dW8NhFRlrh66cgA3 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster-label text{fill:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster-label span{color:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster-label span p{background-color:transparent;}#mermaid-svg-dW8NhFRlrh66cgA3 .label text,#mermaid-svg-dW8NhFRlrh66cgA3 span{fill:#333;color:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 .node rect,#mermaid-svg-dW8NhFRlrh66cgA3 .node circle,#mermaid-svg-dW8NhFRlrh66cgA3 .node ellipse,#mermaid-svg-dW8NhFRlrh66cgA3 .node polygon,#mermaid-svg-dW8NhFRlrh66cgA3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dW8NhFRlrh66cgA3 .rough-node .label text,#mermaid-svg-dW8NhFRlrh66cgA3 .node .label text,#mermaid-svg-dW8NhFRlrh66cgA3 .image-shape .label,#mermaid-svg-dW8NhFRlrh66cgA3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-dW8NhFRlrh66cgA3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-dW8NhFRlrh66cgA3 .rough-node .label,#mermaid-svg-dW8NhFRlrh66cgA3 .node .label,#mermaid-svg-dW8NhFRlrh66cgA3 .image-shape .label,#mermaid-svg-dW8NhFRlrh66cgA3 .icon-shape .label{text-align:center;}#mermaid-svg-dW8NhFRlrh66cgA3 .node.clickable{cursor:pointer;}#mermaid-svg-dW8NhFRlrh66cgA3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-dW8NhFRlrh66cgA3 .arrowheadPath{fill:#333333;}#mermaid-svg-dW8NhFRlrh66cgA3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dW8NhFRlrh66cgA3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dW8NhFRlrh66cgA3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dW8NhFRlrh66cgA3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-dW8NhFRlrh66cgA3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dW8NhFRlrh66cgA3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster text{fill:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 .cluster span{color:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dW8NhFRlrh66cgA3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-dW8NhFRlrh66cgA3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-dW8NhFRlrh66cgA3 .icon-shape,#mermaid-svg-dW8NhFRlrh66cgA3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dW8NhFRlrh66cgA3 .icon-shape p,#mermaid-svg-dW8NhFRlrh66cgA3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-dW8NhFRlrh66cgA3 .icon-shape .label rect,#mermaid-svg-dW8NhFRlrh66cgA3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dW8NhFRlrh66cgA3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-dW8NhFRlrh66cgA3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-dW8NhFRlrh66cgA3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
操作系统
底层实现
运行时环境
对象系统
内存管理
执行阶段
编译阶段
源代码层
Python源代码.py文件
词法分析器Lexer
语法分析器Parser
抽象语法树AST
编译器Compiler
字节码.pyc文件
Python虚拟机PVM
执行栈Value Stack
名字空间Namespace
引用计数Reference Counting
垃圾回收Garbage Collector
PyObject对象基类
类型对象Type Object
内建类型Built-in Types
标准库stdlib
第三方包PyPI
C扩展模块Extension Modules
CPython解释器C语言实现
文件系统
网络通信
进程线程
系统调用
5.2 Python 对象模型架构图
#mermaid-svg-M9L2mmAgpaLqVcEB{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-M9L2mmAgpaLqVcEB .error-icon{fill:#552222;}#mermaid-svg-M9L2mmAgpaLqVcEB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-M9L2mmAgpaLqVcEB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-M9L2mmAgpaLqVcEB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-M9L2mmAgpaLqVcEB .marker.cross{stroke:#333333;}#mermaid-svg-M9L2mmAgpaLqVcEB svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-M9L2mmAgpaLqVcEB p{margin:0;}#mermaid-svg-M9L2mmAgpaLqVcEB g.classGroup text{fill:#9370DB;stroke:none;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-M9L2mmAgpaLqVcEB g.classGroup text .title{font-weight:bolder;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster-label text{fill:#333;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster-label span{color:#333;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster-label span p{background-color:transparent;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster text{fill:#333;}#mermaid-svg-M9L2mmAgpaLqVcEB .cluster span{color:#333;}#mermaid-svg-M9L2mmAgpaLqVcEB .nodeLabel,#mermaid-svg-M9L2mmAgpaLqVcEB .edgeLabel{color:#131300;}#mermaid-svg-M9L2mmAgpaLqVcEB .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-M9L2mmAgpaLqVcEB .label text{fill:#131300;}#mermaid-svg-M9L2mmAgpaLqVcEB .labelBkg{background:#ECECFF;}#mermaid-svg-M9L2mmAgpaLqVcEB .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-M9L2mmAgpaLqVcEB .classTitle{font-weight:bolder;}#mermaid-svg-M9L2mmAgpaLqVcEB .node rect,#mermaid-svg-M9L2mmAgpaLqVcEB .node circle,#mermaid-svg-M9L2mmAgpaLqVcEB .node ellipse,#mermaid-svg-M9L2mmAgpaLqVcEB .node polygon,#mermaid-svg-M9L2mmAgpaLqVcEB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-M9L2mmAgpaLqVcEB .divider{stroke:#9370DB;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB g.clickable{cursor:pointer;}#mermaid-svg-M9L2mmAgpaLqVcEB g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-M9L2mmAgpaLqVcEB g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-M9L2mmAgpaLqVcEB .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-M9L2mmAgpaLqVcEB .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-M9L2mmAgpaLqVcEB .dashed-line{stroke-dasharray:3;}#mermaid-svg-M9L2mmAgpaLqVcEB .dotted-line{stroke-dasharray:1 2;}#mermaid-svg-M9L2mmAgpaLqVcEB #compositionStart,#mermaid-svg-M9L2mmAgpaLqVcEB .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #compositionEnd,#mermaid-svg-M9L2mmAgpaLqVcEB .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #dependencyStart,#mermaid-svg-M9L2mmAgpaLqVcEB .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #dependencyStart,#mermaid-svg-M9L2mmAgpaLqVcEB .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #extensionStart,#mermaid-svg-M9L2mmAgpaLqVcEB .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #extensionEnd,#mermaid-svg-M9L2mmAgpaLqVcEB .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #aggregationStart,#mermaid-svg-M9L2mmAgpaLqVcEB .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #aggregationEnd,#mermaid-svg-M9L2mmAgpaLqVcEB .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #lollipopStart,#mermaid-svg-M9L2mmAgpaLqVcEB .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB #lollipopEnd,#mermaid-svg-M9L2mmAgpaLqVcEB .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-M9L2mmAgpaLqVcEB .edgeTerminals{font-size:11px;line-height:initial;}#mermaid-svg-M9L2mmAgpaLqVcEB .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-M9L2mmAgpaLqVcEB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-M9L2mmAgpaLqVcEB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-M9L2mmAgpaLqVcEB :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
整数类型
字符串类型
列表类型
字典类型
函数对象
模块对象
数值方法
序列方法
映射方法
PyObject
+ob_refcnt: 引用计数
+ob_type: 类型指针
PyTypeObject
+tp_name: 类型名称
+tp_basicsize: 基础大小
+tp_methods: 方法列表
PyNumberMethods
+nb_add: 加法
+nb_subtract: 减法
+nb_multiply: 乘法
PySequenceMethods
+sq_length: 长度
+sq_item: 索引访问
+sq_concat: 连接
PyMappingMethods
+mp_length: 长度
+mp_subscript: 索引
int
str
list
dict
function
module
所有Python对象的基类\\n位于C语言层面
5.3 Python 内存管理架构图
#mermaid-svg-ScW4ZdnrvGTtFZne{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ScW4ZdnrvGTtFZne .error-icon{fill:#552222;}#mermaid-svg-ScW4ZdnrvGTtFZne .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ScW4ZdnrvGTtFZne .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ScW4ZdnrvGTtFZne .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ScW4ZdnrvGTtFZne .marker.cross{stroke:#333333;}#mermaid-svg-ScW4ZdnrvGTtFZne svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ScW4ZdnrvGTtFZne p{margin:0;}#mermaid-svg-ScW4ZdnrvGTtFZne .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster-label text{fill:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster-label span{color:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster-label span p{background-color:transparent;}#mermaid-svg-ScW4ZdnrvGTtFZne .label text,#mermaid-svg-ScW4ZdnrvGTtFZne span{fill:#333;color:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne .node rect,#mermaid-svg-ScW4ZdnrvGTtFZne .node circle,#mermaid-svg-ScW4ZdnrvGTtFZne .node ellipse,#mermaid-svg-ScW4ZdnrvGTtFZne .node polygon,#mermaid-svg-ScW4ZdnrvGTtFZne .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ScW4ZdnrvGTtFZne .rough-node .label text,#mermaid-svg-ScW4ZdnrvGTtFZne .node .label text,#mermaid-svg-ScW4ZdnrvGTtFZne .image-shape .label,#mermaid-svg-ScW4ZdnrvGTtFZne .icon-shape .label{text-anchor:middle;}#mermaid-svg-ScW4ZdnrvGTtFZne .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ScW4ZdnrvGTtFZne .rough-node .label,#mermaid-svg-ScW4ZdnrvGTtFZne .node .label,#mermaid-svg-ScW4ZdnrvGTtFZne .image-shape .label,#mermaid-svg-ScW4ZdnrvGTtFZne .icon-shape .label{text-align:center;}#mermaid-svg-ScW4ZdnrvGTtFZne .node.clickable{cursor:pointer;}#mermaid-svg-ScW4ZdnrvGTtFZne .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ScW4ZdnrvGTtFZne .arrowheadPath{fill:#333333;}#mermaid-svg-ScW4ZdnrvGTtFZne .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ScW4ZdnrvGTtFZne .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ScW4ZdnrvGTtFZne .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ScW4ZdnrvGTtFZne .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ScW4ZdnrvGTtFZne .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ScW4ZdnrvGTtFZne .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster text{fill:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne .cluster span{color:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ScW4ZdnrvGTtFZne .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ScW4ZdnrvGTtFZne rect.text{fill:none;stroke-width:0;}#mermaid-svg-ScW4ZdnrvGTtFZne .icon-shape,#mermaid-svg-ScW4ZdnrvGTtFZne .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ScW4ZdnrvGTtFZne .icon-shape p,#mermaid-svg-ScW4ZdnrvGTtFZne .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ScW4ZdnrvGTtFZne .icon-shape .label rect,#mermaid-svg-ScW4ZdnrvGTtFZne .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ScW4ZdnrvGTtFZne .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ScW4ZdnrvGTtFZne .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ScW4ZdnrvGTtFZne :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
内存池
内存层次
垃圾回收
第0代年轻对象
第1代中生代对象
第2代老年代对象
Python对象层
内存池层PyMem
操作系统层malloc/free
小对象池< 512字节
大对象直接分配
5.4 Python 模块导入机制流程图
模块对象
加载器
Loader
查找器
MetaPathFinder
import语句
用户代码
模块对象
加载器
Loader
查找器
MetaPathFinder
import语句
用户代码
#mermaid-svg-kxrhxBboYuOyLZP3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kxrhxBboYuOyLZP3 .error-icon{fill:#552222;}#mermaid-svg-kxrhxBboYuOyLZP3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kxrhxBboYuOyLZP3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kxrhxBboYuOyLZP3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kxrhxBboYuOyLZP3 .marker.cross{stroke:#333333;}#mermaid-svg-kxrhxBboYuOyLZP3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kxrhxBboYuOyLZP3 p{margin:0;}#mermaid-svg-kxrhxBboYuOyLZP3 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kxrhxBboYuOyLZP3 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-kxrhxBboYuOyLZP3 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-kxrhxBboYuOyLZP3 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-kxrhxBboYuOyLZP3 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-kxrhxBboYuOyLZP3 .sequenceNumber{fill:white;}#mermaid-svg-kxrhxBboYuOyLZP3 #sequencenumber{fill:#333;}#mermaid-svg-kxrhxBboYuOyLZP3 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-kxrhxBboYuOyLZP3 .messageText{fill:#333;stroke:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kxrhxBboYuOyLZP3 .labelText,#mermaid-svg-kxrhxBboYuOyLZP3 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .loopText,#mermaid-svg-kxrhxBboYuOyLZP3 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-kxrhxBboYuOyLZP3 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-kxrhxBboYuOyLZP3 .noteText,#mermaid-svg-kxrhxBboYuOyLZP3 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-kxrhxBboYuOyLZP3 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kxrhxBboYuOyLZP3 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kxrhxBboYuOyLZP3 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kxrhxBboYuOyLZP3 .actorPopupMenu{position:absolute;}#mermaid-svg-kxrhxBboYuOyLZP3 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-kxrhxBboYuOyLZP3 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kxrhxBboYuOyLZP3 .actor-man circle,#mermaid-svg-kxrhxBboYuOyLZP3 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-kxrhxBboYuOyLZP3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
alt
[模块已缓存]
[模块未缓存]
import mymodule
查找模块
sys.meta_path遍历
检查sys.modules缓存
返回缓存模块
查找文件/内置模块
创建加载器
创建模块对象
执行模块代码
缓存到sys.modules
返回模块对象
模块可用
5.5 Python 异步编程架构图
#mermaid-svg-ZEZHyjpvUTh0Q0Au{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .error-icon{fill:#552222;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .marker.cross{stroke:#333333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au p{margin:0;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster-label text{fill:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster-label span{color:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster-label span p{background-color:transparent;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .label text,#mermaid-svg-ZEZHyjpvUTh0Q0Au span{fill:#333;color:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .node rect,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node circle,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node ellipse,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node polygon,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .rough-node .label text,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node .label text,#mermaid-svg-ZEZHyjpvUTh0Q0Au .image-shape .label,#mermaid-svg-ZEZHyjpvUTh0Q0Au .icon-shape .label{text-anchor:middle;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .rough-node .label,#mermaid-svg-ZEZHyjpvUTh0Q0Au .node .label,#mermaid-svg-ZEZHyjpvUTh0Q0Au .image-shape .label,#mermaid-svg-ZEZHyjpvUTh0Q0Au .icon-shape .label{text-align:center;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .node.clickable{cursor:pointer;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .arrowheadPath{fill:#333333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ZEZHyjpvUTh0Q0Au .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZEZHyjpvUTh0Q0Au .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster text{fill:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .cluster span{color:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ZEZHyjpvUTh0Q0Au rect.text{fill:none;stroke-width:0;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .icon-shape,#mermaid-svg-ZEZHyjpvUTh0Q0Au .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .icon-shape p,#mermaid-svg-ZEZHyjpvUTh0Q0Au .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .icon-shape .label rect,#mermaid-svg-ZEZHyjpvUTh0Q0Au .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZEZHyjpvUTh0Q0Au .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ZEZHyjpvUTh0Q0Au .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ZEZHyjpvUTh0Q0Au :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
底层实现
执行流程
asyncio核心
IO就绪
IO未就绪
事件循环Event Loop
任务队列Task Queue
协程Coroutine
注册协程
创建Task
事件循环调度
await挂起
恢复执行
切换其他任务
任务完成
selectorsIO多路复用
Future对象
回调函数
5.6 架构关键点总结表
| 词法分析器 | 将源代码转为Token序列 | 有限状态机、正则表达式 |
| 语法分析器 | 构建抽象语法树AST | LL(1)、递归下降分析 |
| 编译器 | 生成字节码.pyc文件 | 符号表管理、优化器 |
| PVM | 执行字节码指令 | 栈式虚拟机、解释器循环 |
| PyObject | 所有对象的C结构基类 | 结构体、多态实现 |
| 内存池 | 小对象高效分配 | 内存碎片减少、Arena分配 |
| 分代GC | 循环引用垃圾回收 | 标记-清除、三代回收 |
| Event Loop | 异步任务调度核心 | IO多路复用、回调机制 |
六、Python 最佳实践
6.1 代码风格(PEP 8)
# 遵循PEP 8代码风格
# 使用pylint、flake8、black等工具检查
# 命名规范
module_name.py # 模块:小写+下划线
ClassName # 类:驼峰命名
function_name # 函数:小写+下划线
CONSTANT_NAME # 常量:大写+下划线
_private_var # 私有属性:单下划线前缀
# 导入顺序
import os # 标准库
import numpy as np # 第三方库
from mymodule import myfunc # 本地模块
6.2 常用第三方库
| 数据分析 | NumPy, Pandas, Polars |
| 机器学习 | Scikit-learn, TensorFlow, PyTorch |
| Web开发 | Django, Flask, FastAPI |
| 爬虫 | requests, BeautifulSoup, Scrapy |
| 可视化 | Matplotlib, Seaborn, Plotly |
| 测试 | pytest, unittest, mock |
| 异步 | asyncio, aiohttp, uvloop |
七、总结
Python凭借其简洁的语法、强大的功能和丰富的生态系统,已成为现代软件开发的重要工具。从简单的脚本到复杂的人工智能应用,Python都能胜任。掌握Python的核心概念和高级特性,将使你成为一名更优秀的开发者。 学习建议:

