关于Python类型注解的几个实用小技巧
虽然python是动态类型语言, 但是python3.5引入的类型注解特性却很有用. 不但有助于源码阅读, 而且在类型提示和代码自动补全上也很方便. 但是它毕竟不是静态类型编译型语言, 有一些特殊的情况, 需要一些小技巧才能够处理.
引用后面定义的类型
由于python不是编译型语言, 如果在前面直接引用后面定义的类型是不行的. 如下所示:
会提示未定义的类.
此时有两种处理办法:
- 使用字符串类型注解
test:'Test' = None
class Test:pass
- 引入支持后向类型注解的特性
from __future__ import annotations
test:Test = None
class Test:pass
引用其他模块的类型, 但是又不真正导入此模块
有时候需要引用其他模块中定义的类型, 但是又不能真正导入此模块(不能真正导入的原因往往是避免循环的问题), 此时可以采用如下的技巧:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from xxx import Yyy
其中TYPE_CHECKING
变量在真正执行时是False, 并不会真正导入模块; 但是在类型检查时为True, 这样就可以享受类型注解的好处了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!