一、高级语法与特性(进阶基础)
熟练掌握后能大幅简化代码,写出Pythonic风格代码
1. 迭代器与生成器
- 迭代器 :实现
__iter__()和__next__()的对象,惰性遍历数据,节省内存 - 生成器 :用
yield关键字创建,是简化版迭代器,边执行边返回
python
# 生成器:生成1~n的偶数,不占用全量内存
def even_generator(n):
for i in range(n):
if i % 2 == 0:
yield i # 暂停函数,返回值,下次调用继续执行
# 使用
for num in even_generator(10):
print(num)
2. 装饰器
核心作用:不修改原函数代码,为函数添加额外功能(日志、计时、权限校验)
python
import time
# 计时装饰器
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs) # 执行原函数
end = time.time()
print(f"函数{func.__name__}执行耗时:{end-start:.4f}s")
return result
return wrapper
@timer # 语法糖,等价于 test = timer(test)
def test(n):
return sum(range(n))
test(1000000)
3. 上下文管理器
用于自动管理资源(文件、数据库连接、锁),无需手动关闭
python
# 自定义上下文管理器
class FileHandler:
def __init__(self, path, mode="r"):
self.path = path
self.mode = mode
def __enter__(self):
self.file = open(self.path, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close() # 自动关闭文件
# 使用
with FileHandler("test.txt", "w") as f:
f.write("Python进阶")
4. 高阶函数
map/filter/functools.reduce/lambda匿名函数
python
from functools import reduce
# 列表元素平方
list(map(lambda x: x**2, [1,2,3])) # [1,4,9]
# 求和
reduce(lambda a,b: a+b, [1,2,3]) # 6
二、并发与并行(提升程序效率)
解决IO密集型 (网络请求、文件读写)和CPU密集型(大量计算)任务
1. 多线程(threading)
适合IO密集型,受GIL(全局解释器锁)限制,无法真正并行
python
import threading
import time
def task(name):
print(f"线程{name}开始")
time.sleep(2) # 模拟IO等待
print(f"线程{name}结束")
# 创建线程
t1 = threading.Thread(target=task, args=("A",))
t2 = threading.Thread(target=task, args=("B",))
t1.start()
t2.start()
t1.join()
t2.join()
2. 多进程(multiprocessing)
适合CPU密集型,绕过GIL,真正利用多核CPU
python
from multiprocessing import Process
def heavy_task():
sum(range(10**8)) # 高计算量任务
if __name__ == "__main__":
p1 = Process(target=heavy_task)
p1.start()
p1.join()
3. 异步编程(asyncio)
最高效的IO并发方案,单线程实现高并发,适合爬虫、接口服务
python
import asyncio
async def async_task(name): # 异步函数
print(f"异步任务{name}开始")
await asyncio.sleep(2) # 异步等待,不阻塞线程
print(f"异步任务{name}结束")
async def main():
# 并发执行多个任务
await asyncio.gather(async_task("A"), async_task("B"))
asyncio.run(main())
三、面向对象进阶
1. 魔法方法
除了__init__,掌握__str__/__repr__/__getitem__/__call__等,自定义对象行为
python
class Student:
def __init__(self, name):
self.name = name
def __str__(self): # 打印对象时显示
return f"学生:{self.name}"
def __call__(self): # 让对象可像函数一样调用
print(f"我是{self.name}")
s = Student("小明")
print(s) # 学生:小明
s() # 我是小明
2. 元类(metaclass)
Python中类的类,用于动态创建/修改类,框架底层核心(如Django ORM)
python
# 元类:自动给类添加属性
class MyMeta(type):
def __new__(cls, name, bases, attrs):
attrs["author"] = "Python进阶"
return super().__new__(cls, name, bases, attrs)
class Test(metaclass=MyMeta):
pass
print(Test.author) # Python进阶
3. 抽象基类(ABC)
强制子类实现指定方法,规范代码结构
python
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def speak(self):
pass # 子类必须实现
class Dog(Animal):
def speak(self):
print("汪汪汪")
四、设计模式(工程化必备)
掌握常用设计模式,写出可复用、可维护、可扩展的代码
- 单例模式:一个类只能创建一个实例(数据库连接池)
- 工厂模式:统一创建对象,解耦创建与使用
- 装饰器模式:前文已讲,动态增强功能
- 观察者模式:事件触发,一对多通知(GUI、消息系统)
五、性能优化与调试
1. 性能分析
timeit:测试小段代码执行时间cProfile:分析函数耗时瓶颈
python
import cProfile
def test():
sum(range(10**6))
cProfile.run("test()")
2. 内存优化
- 使用生成器代替列表
gc模块手动回收内存pympler分析内存占用
3. 调试工具
pdb:Python内置调试器logging:替代print,专业日志输出
六、工程化实践
- 包与模块管理 :
import原理、__init__.py、相对/绝对导入 - 虚拟环境 :
venv/conda隔离项目依赖 - 依赖管理 :
requirements.txt、pyproject.toml - 代码规范 :PEP8、
black自动格式化、pylint检查 - 单元测试 :
unittest/pytest编写测试用例 - 打包发布 :
setuptools打包为可安装包
七、进阶实战方向
学完基础进阶后,可深耕以下方向:
- Web开发:FastAPI/Flask/Django 源码与高并发优化
- 数据科学:Pandas高级、NumPy向量化运算
- 爬虫:异步爬虫、Scrapy框架、反爬绕过
- 自动化/运维:Python运维脚本、Docker集成
- 后端开发:微服务、消息队列(RabbitMQ)、Redis缓存
总结
- Python进阶第一步:掌握装饰器、生成器、上下文管理器等高级语法
- 效率提升核心:异步编程、多进程/线程
- 工程化关键:设计模式、代码规范、单元测试
- 最终目标:写出高效、优雅、可维护的工业级代码