我要提问
PYTHON TUTORIAL

Python 系统教程

从基础语法、数据结构、面向对象到装饰器、asyncio 与常用库,打通脚本与服务端开发。

Python 系统教程

Python 系统教程封面

Python 是一门解释型、动态强类型、多范式的语言,以语法简洁、生态丰富著称,广泛用于 Web、数据科学、自动化与 AI 领域。本教程按"语法 → 数据结构 → 面向对象 → 装饰器 → 异步 → 常用库 → 实战"的脉络展开。

一、环境搭建与基础语法

建议使用 pyenv 或官方安装包管理多版本 Python,用 venv 创建虚拟环境隔离项目依赖。Python 用缩进表示代码块,缩进必须一致(推荐 4 个空格)。

基本数据类型

Python 内置 intfloatboolstrNoneType 等基本类型。整数不会溢出(受内存限制),字符串不可变。

name = 'mrgr.cn'
age = 5
is_open = True

# f-string 格式化(推荐)
print(f'{name} 已运营 {age} 年')  # mrgr.cn 已运营 5 年

# 类型查看
type(name)   # <class 'str'>
type(age)    # <class 'int'>
提示:Python 是动态类型但强类型语言,'1' + 1 会抛 TypeError,不会隐式转换,需要显式 int('1')

二、数据结构与序列操作

Python 内置四大数据结构:list(列表)、tuple(元组)、dict(字典)、set(集合)。

列表与推导式

nums = [1, 2, 3, 4, 5]
nums.append(6)           # 追加
nums[0] = 0              # 修改
squares = [x * x for x in nums if x % 2 == 0]
# [4, 16, 36]

字典与集合

字典(dict)是键值对映射,Python 3.7+ 保证插入顺序;集合(set)用于去重和集合运算。

user = {'name': 'mrgr', 'age': 5}
user['email'] = 'hi@mrgr.cn'   # 新增键值
for k, v in user.items():
    print(k, v)

tags = {'python', 'web', 'ai'}
tags.add('data')
tags & {'web', 'go'}   # 交集 {'web'}
  • 可变类型:list、dict、set,可原地修改。
  • 不可变类型:tuple、str、frozenset,修改会生成新对象。
  • 推导式:list/dict/set 都支持推导式,写法简洁、性能优于循环 append。

三、函数与面向对象

Python 函数用 def 定义,支持默认参数、关键字参数、可变参数(*args**kwargs)。参数传递是"赋值传递"——传递对象的引用。

类与继承

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return f'{self.name} 发出声音'

class Cat(Animal):          # 继承
    def speak(self):        # 重写
        return f'{self.name} 喵喵叫'

c = Cat('小橘')
print(c.speak())           # 小橘 喵喵叫

魔法方法

以双下划线包裹的方法叫魔法方法(dunder),定义了对象的行为:__init__ 构造、__str__ 字符串表示、__len__ 长度、__eq__ 相等比较等。

四、装饰器与上下文管理器

装饰器本质是"接收函数返回函数"的高阶函数,用于在不修改原函数的前提下增强其行为。

计时装饰器

import time
from functools import wraps

def timer(fn):
    @wraps(fn)
    def wrapper(*args, **kwargs):
        start = time.time()
        result = fn(*args, **kwargs)
        print(f'{fn.__name__} 耗时 {time.time() - start:.3f}s')
        return result
    return wrapper

@timer
def slow_task():
    time.sleep(1)

slow_task()  # slow_task 耗时 1.001s

上下文管理器

上下文管理器通过 with 语句保证资源的正确获取与释放,实现 __enter____exit__ 即可,也可用 contextlib.contextmanager 装饰器简化。

class FileOpener:
    def __init__(self, path):
        self.path = path
    def __enter__(self):
        self.f = open(self.path, 'r', encoding='utf-8')
        return self.f
    def __exit__(self, exc_type, exc, tb):
        self.f.close()

with FileOpener('data.txt') as f:
    print(f.read())

五、异步编程 asyncio

Python 的 asyncio 提供单线程并发能力,基于协程(coroutine)与事件循环。协程用 async def 定义,用 await 等待另一个协程完成。

import asyncio

async def fetch(url):
    await asyncio.sleep(1)   # 模拟 IO
    return f'{url} 的内容'

async def main():
    # 并发执行,总耗时约 1 秒而非 3 秒
    results = await asyncio.gather(
        fetch('a'), fetch('b'), fetch('c')
    )
    print(results)

asyncio.run(main())
要点:asyncio 适合 IO 密集场景(网络、文件),CPU 密集任务应配合多进程(multiprocessing)。协程不会自动并行,需要 gathercreate_task 才能并发调度。

六、常用标准库与第三方库

Python 的强大很大程度上来自其丰富的标准库与第三方生态。

  1. os / pathlib:路径与文件系统操作,pathlib 是面向对象的现代写法。
  2. json:JSON 序列化与反序列化。
  3. collectionsCounter 计数、defaultdict 默认值字典、namedtuple 命名元组。
  4. requests:最流行的 HTTP 客户端,API 友好。
  5. FastAPI / Flask:现代 Web 框架,FastAPI 原生支持异步与类型校验。
  6. NumPy / Pandas:数据科学基石,处理数值与表格数据。
from collections import Counter
from pathlib import Path

words = ['python', 'web', 'python', 'ai', 'web', 'python']
print(Counter(words))   # Counter({'python': 3, 'web': 2, 'ai': 1})

for p in Path('.').glob('*.py'):
    print(p.name)

七、Web 与数据科学实战

学完前面的知识,可以用 Python 做两类常见实战:用 FastAPI 搭建接口服务,用 Pandas 做数据分析。

FastAPI 最小接口

from fastapi import FastAPI

app = FastAPI()

@app.get('/hello')
def hello(name: str = 'mrgr'):
    return {'msg': f'hello {name}'}

# 启动:uvicorn main:app --reload

数据科学方向,Pandas 让你像操作 Excel 一样处理表格:

import pandas as pd

df = pd.read_csv('users.csv')
print(df.head())                 # 前 5 行
print(df.groupby('city').size()) # 按城市分组计数

本教程到此结束。建议结合 实战项目 把 Python 用到具体场景中,遇到问题可到 后端问答报错解决 提问。

返回教程中心