👉 项目官网:https://www.python-office.com/ 👈
👉 本开源项目的交流群 👈
大家好,这里是程序员晚枫,全网同名。
【视频脚本】Python Type Hint 实战精讲
目标时长:15~18 min,B 站 1080p60,附完整代码 & 课件下载
观众画像:已用 Python 写过项目,但对类型提示“只写过 List[int]”的工程师
- 片头(15 s)
• 标题:「15 分钟吃透 Python Type Hint —— 从入门到工程化」
• 闪现 4 个痛点:
- IDE 没补全
- 运行时才炸类型错误
- 祖传代码看不懂
- Code Review 全靠吼
- 开场 Hook(45 s)
“同样是 Python,为什么有人能重构 10 万行不翻车?答案:给解释器一双‘静态眼睛’。”
现场演示:
左侧 VS Code 无类型提示 → 补全失效、运行时报错
右侧加上类型提示 → 补全、重构、文档一条龙
- 快速热身(2 min)
- 1 最小可运行片段
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24def add(a: int, b: int) -> int:
return a + b
```
2.2 现场改 bug:把 b 改成 str,mypy 立即红线警告
2.3 解释 PEP 484 的历史:2014 → 2024 十年进化路线图
--------------------------------------------------------------------
3. 核心语法速通(3 min)
3.1 基本标量:int, float, bool, str, bytes
3.2 容器泛型:List[int] vs list[int](3.9+)
3.3 Union 与新版 | 语法
3.4 Optional[X] 就是 Union[X, None] 的语法糖
3.5 现场互动弹幕:「下面哪个写法 3.10 之后不推荐?」
A) Optional[int] B) Union[int, None] C) int | None
--------------------------------------------------------------------
4. 中阶武器(4 min)
4.1 TypeVar —— 泛型函数
```python
from typing import TypeVar
T = TypeVar('T')
def first(items: list[T]) -> T:
return items[0] - 2 Generic —— 泛型类
1
2class Stack(Generic[T]):
... - 3 ParamSpec & Concatenate —— 高阶装饰器
现场演示:把 @timer 装饰器完整加类型 - 4 TypedDict vs dataclass —— JSON 友好方案
- 实战演练(4 min)
- 1 需求:写一个 CLI 下载器,支持限速、重试、断点续传
- 2 现场 60 秒搭骨架:
1
2
3
4
5
6from __future__ import annotations
import httpx
from typing import Protocol
class Progress(Protocol):
def update(self, n: int) -> None: ... - 3 类型驱动设计:
- 协议(Protocol)替代继承
- httpx 官方类型自动补全
- mypy –strict 零警告
5.4 运行测试:故意传错参数,mypy 秒级捕获
- 工程化落地(2 min)
- 1 pre-commit 钩子:mypy + black + isort
- 2 pyproject.toml 最小配置
1
2
3[tool.mypy]
strict = true
python_version = "3.11" - 3 CI:GitHub Actions matrix 3.9/3.10/3.11
- 4 渐进式迁移:
--ignore-missing-imports
过渡- stub 文件 .pyi 的使用
- 彩蛋 & 展望(30 s)
• 3.12 新玩具:TypeAliasType、override 装饰器
• 3.13 预告:TypedDict 只读字段、TypeForm
• 点赞过 1k 出下一期「用 mypy 插件给 Django QuerySet 加类型」
- 片尾(10 s)
• 下载链接:GitHub + 课件 PDF
• 弹幕口令:「类型安全yyds」
录制小贴士
• 双机位:屏幕录制 + 人像小窗
• 字幕:自动生成后手动校正术语
• 代码字体:JetBrains Mono 22 px
• 高亮色:#00B0FF(与 VS Code Dracula 主题一致)
• 音频:Shure MV7 + 降噪
附:完整 Demo 仓库结构
1 | type-hint-demo/ |
大家在学习课程中有任何问题,欢迎+微信和我交流👉我的联系方式:微信、读者群、1对1、福利
剪映「零插件」做出赛博感的 5 步套路
(15 min 视频,用剪映桌面版 4.6+ 即可完成,所有参数可直接抄)
────────────────
1 片头 3 秒「HUD 扫描」
• 资源:剪映「素材库 → 科技」搜索「HUD 扫描线」,挑一个 3 s 的透明通道素材。
• 叠加方式:放在最上层 → 混合模式「滤色」 → 不透明度 80 %。
• 调色:选中 HUD 层 → 调节 → 色温 -20 → 色调 +20 → 饱和度 +30,瞬间冷光科技蓝。
2 代码框「黑客窗口」
• 背景:新建「背景 → 纯色」#0D1117。
• 录屏素材拖进来 → 裁掉多余 → 缩放 92 % 居中。
• 边框:
①「特效 → 边框 → 霓虹边框」选一个,颜色改 #00B0FF,宽度 3 px。
②「动画 → 循环 → 闪烁」里挑「呼吸灯」,速度 2 s。
• 光标拖尾:
用「贴纸 → 搜索『光标』」→ 放在代码输入处 → 打关键帧(每 3 帧移动一次)→ 加「运动模糊」特效。
3 字幕条 & 关键术语弹出
• 字幕条:
文字 → 样式 → 字体选「思源黑体 Heavy」→ 大小 48 → 颜色 #FFFFFF。
背景 → 圆角矩形 → 填充 #161B22 → 描边 2 px #00B0FF。
动画 → 入场「滑入」0.3 s,出场「滑出」0.3 s。
• 术语高亮:
复制同一行字幕 → 改颜色 #00B0FF → 加「动画 → 放大缩小」0.2 s,放在原字幕上方轨道,实现瞬间闪蓝。
4 转场 & 音效
• 代码块切换:
「转场 → 科技 → 数字故障」时长 8 帧 → 勾选「应用到全部」。
• 音效:
资源库搜索「whoosh」「confirm」→ 放在转场处 → 音量 -15 dB → 淡入淡出各 5 帧。
• 全局背景乐:
资源库「电子」分类挑 120 BPM 曲子 → 音量 -25 dB → 开启「智能踩点」→ 转场自动对齐鼓点。
5 片尾二维码 Glitch
• 二维码 PNG 拖进来 → 位置右下角 → 缩放 25 %。
• 特效 → 扭曲 → Glitch(强度 50,速度 1.5 s)→ 循环 3 次。
• 文字「扫码领取源码」:字体 36,白字 + 2 px #00B0FF 外发光。
────────────────
一键复用模板
剪映 → 我的模板 → 新建 → 把上面 5 步存为「CyberType」模板
下次录完直接「一键成片」,替换录屏素材即可。