- 2
- 0
- 约3.64千字
- 约 9页
- 2025-06-03 发布于四川
- 举报
第
Python中类型提示的最佳实践
使用动态语言一时爽,代码重构火葬场。相信你一定听过这句话,和单元测试一样,虽然写代码的时候花费你少量的时间,但是从长远来看,这是非常值得的。本文分享如何更好的理解和使用Python的类型提示。
1、类型提示仅在语法层面有效
类型提示(自PEP3107开始引入)用于向变量、参数、函数参数以及它们的返回值、类属性和方法添加类型。
Python的变量类型是动态的,可以在运行时修改,为代码添加类型提示,仅在语法层面支持,对代码的运行没有任何影响,Python解释器在运行代码的时候会忽略类型提示。
因此类型提示一个直观的作用就是提升代码的可读性,方便调用者传入/传出恰当类型的参数,便于代码重构。
Python内置的基本类型可以直接用于类型提示:
变量的类型提示示例:
a:int=3
b:float=2.4
c:bool=True
d:list=[A,B,C]
e:dict={x:y}
f:set={a,b,c}
g:tuple=(name,age,job)
函数的类型提示:
defadd_numbers(x:type_x,y:type_y,z:type_z=100)-type_return:
returnx+y+z
这里的type_x,type_y,type_z,type_return可以是内置的基本类型,也可以是自定义类型。
类的类型提示:
classPerson:
first_name:str=John
last_name:str=Does
age:int=31
2、用mypy检查类型提示
假如有这样一段代码:
x:int=2
x=3.5
用Python解释器执行是不会有任何错误的:
借助于mypy就可以,先pipinstallmypy安装一下,然后mypyscript.py即可:
更多mypy相关可以参考前文mypy这个工具,让Python的类型提示变得非常实用。
3、类型提示的好处
如果解释器没有强制执行类型提示,为什么还要编写类型提示呢?确实,类型提示不会改变代码的运行方式:Python本质上是动态类型的,这一点不太可能会改变。但是,从开发人员经验的角度来看,类型提示有很多好处。
(1)、使用类型提示,尤其是在函数中,通过类型提示来明确参数类型和所产生结果的类型,非常便于阅读和理解。
(2)、类型提示消除了认知开销,并使代码更易于阅读和调试。考虑到输入和输出的类型,你可以轻松推断对象以及它们如何调用。
(3)、类型提示可改善代码编辑体验。IDE可以依靠类型检测来静态分析你的代码并帮助检测潜在的错误(例如,传递错误类型的参数、调用错误的方法等)。另外,还可以根据类型提示为每个变量提供自动补全。
IDE的类型检查
IDE的类型检查
IDE类型检查后的自动补全
4、List用法
假如你需要列表list内部是float的类型提示,这样做是不行的:
defmy_dummy_function(l:list[float]):
returnsum(l)
标准库typing考虑到了这个问题,你可以这样:
fromtypingimportList
defmy_dummy_function(vector:List[float]):
returnsum(vector)
5、Dict用法
假如要提示这样的类型:
my_dict={name:Somenzz,job:engineer}
借助于Dict,你可以这样定义类型:
fromtypingimportDict
my_dict_type=Dict[str,str]
my_dict:my_dict_type={name:Somenzz,job:engineer}
6、TypedDict用法
假如你需要提示这样的类型,那该怎么办?
d={name:Somenzz,interests:[chess,tennis]}
借助于TypedDict,你可以这样:
TypedDict
7、Union用法
您可能关注的文档
最近下载
- 8173wst5542017学生餐营养指南.pdf VIP
- 器械相关感染的防控课件.pptx VIP
- 保教知识与能力(幼儿园)全套PPT课件.pptx
- 手术室流程优化.pptx VIP
- 2025年度组织生活会个人对照检查材料(党员个人).doc VIP
- 《十万个为什么》阅读测试题(附答案)(推荐).docx VIP
- 2026年教师师德师风培训学习心得体会.docx
- 《餐饮服务》课程知识解析——“18.西餐服务流程与标准(英法美等不同服务方式)”.pdf VIP
- 建设项目工程结算编审规程,CECA_GC3-2010.pdf VIP
- 党员干部个人组织生活会个人对照(学习贯彻党的创新理论方面;加强党性锤炼方面;联系服务职工群众方面;发挥先锋模范作用方面;改作风树新风等方面)存在的问题清单及整改措施.docx VIP
原创力文档

文档评论(0)