Python的快速学习总结
第一步:掌握核心语法
只学最常用的,遇到复杂的再去查文档。
变量与四大基础类型:字符串(
str)、整数(int)、浮点数(float)、布尔值(bool)。控制流:
if-elif-else条件判断,for循环(最常用)和while循环。四大核心容器:
列表(List):
[1, 2, 3],有序、可变,什么都能装。字典(Dict):
{"name": "Alice", "age": 18},键值对,查数据极快。注:元组(Tuple)和集合(Set)了解即可,不用深究。
函数(Function):如何用
def定义函数、传参和return返回值。
第二步:掌握包管理工具
Python 强大的地方就在于“生态”,你不需要自己发明轮子,此处可以延伸学习Conda的用法。
包管理工具(pip):学会用
pip install安装别人的轮子。
第三步:掌握一个成熟框架(FastAPI)
1. 类型提示 (Type Hints) —— FastAPI 的基石
FastAPI 几乎所有的功能(数据校验、文档生成、依赖注入)都是通过 Python 的类型提示实现的。你必须做到“看懂且会写”各种复杂的类型声明。
Python
from typing import List, Dict, Optional
# 1. 基础类型提示
age: int = 25
# 2. 复合类型提示(在 FastAPI 中用来定义收到的 JSON 列表或字典)
user_ids: List[int] = [1, 2, 3]
headers: Dict[str, str] = {"Authorization": "Bearer xxx"}
# 3. 可空类型(在 FastAPI 中用来定义“可选参数”)
# 代表这个参数可以是字符串,也可以是 None(前端不传也不会报错)
username: Optional[str] = None
2. 异步编程 (Async / Await) —— 高性能的秘密
FastAPI 是原生支持异步的。虽然你用同步(普通的 def)也能写,但要发挥它媲美 Go 语言的性能,必须掌握异步。
核心概念:明白为什么要有异步(当程序在等待数据库返回、等待网络请求时,CPU 可以去干别的事,不卡死)。
语法关键字:
async def和await。
Python
import asyncio
# 使用 async def 定义异步函数
async def fetch_data_from_db():
# 模拟耗时的数据库 I/O 操作,必须用 await 挂起
await asyncio.sleep(2)
return {"data": "success"}
async def main():
# 调用异步函数时,前面必须加 await
result = await fetch_data_from_db()
print(result)
3. 类与属性(Class)及装饰器(Decorator)
你不需要成为面向对象大师,但以下两个概念在 FastAPI 中天天见:
类型实例化的语法:FastAPI 中无论是定义数据模型(Pydantic)还是抛出错误,都基于类。
装饰器(@ 符号):FastAPI 用装饰器来定义路由(告诉程序哪个 URL 对应哪个函数)。
Python
from fastapi import FastAPI
app = FastAPI()
# @app.get() 就是一个装饰器,用来把普通的函数注册为 Web 路由
@app.get("/items")
def get_items():
return ["item1", "item2"]
4. 字典(Dict)与解包(Unpacking)
FastAPI 经常需要处理前端传来的 JSON 数据,在 Python 中 JSON 对应的主力就是字典。另外,双星号解包(**dict)在传递配置或转换数据时极为常用。
Python
user_data = {"username": "alex", "email": "alex@example.com", "role": "admin"}
# 字典常用操作:安全获取 key(防止报错)
role = user_data.get("role", "default_user")
# 双星号解包(Unpacking):把字典打散成关键字参数传递
# 这在将 Pydantic 模型存入数据库时非常高频
def create_user_in_db(username, email, role):
pass
create_user_in_db(**user_data)
# 等同于 create_user_in_db(username="alex", email="alex@example.com", role="admin")