This topic created in 2149 days ago, the information mentioned may be changed or developed.
目前我已知的类型提示带来的好处:
- debug 时的错误提示,结合编辑器也会有注释提示等
- 提升可读性、维护性
- ... (请教大家补充~)
还有就是最近的 web 框架 fastapi, 如果按照 pydantic 的类型提示和数据建模的话可以自动生成符合 OpenAPI 标准的 swagger 调试文档。个人感觉这个还是很有用的。
但是类型提示不是类型声明,对提升性能也无用处,大家觉得 python 这个动态语言有必要养成写类型提示的习惯吗?
说道可读性,其实 typing 模块有些定义的可读性不是那么一目了然,也需要一定的学习成本...
希望听听大家的看法
9 replies • 2020-06-28 20:02:37 +08:00
 |
|
1
nightwitch Jun 27, 2020
写起来也方便点啊。 假如你确定下面这个函数只接收字符串,当然最好加上。不加的话,编辑器没法推断 s 的类型,也没法给出更好的补全提示。 def process_string(s): return s.do_something()
|
 |
|
2
szzhiyang Jun 27, 2020
可以参考我之前发的两个帖子下的讨论:
《同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?》
t/606977
《大家是如何实时检查 Python 变量类型的?》
t/602617
|
 |
|
5
fhsan Jun 28, 2020
写文档和类型检查必须的啊,项目大了多了,一个负责几个系统,前后端, 如果每次都靠运行才能知道参数和返回值是什么样的,那不得累死
|
 |
|
6
ungrown Jun 28, 2020
其实你一上来就相当准确地概括了当前阶段类型提示的意义和价值:提示(废话,拖走…… 提示开发者,提示用户,提示 IDE 软件,比如 pycharm 和 pycharm 用户们就确确实实能从 typing 获益匪浅。 至于性能,提示只是提示,动态类型还是动态类型,运行时类型检测该绕不开还是绕不开,肥胖且非线性的数据结构导致的 CPU 缓存命中该 miss 还是 miss 。 cpython 的性能就这么回事了,高 IO 应用基本不拖后腿,高 CPU 应用肯定拖后腿,如果这后腿拖不起的话就老老实实写 C 扩展。说白了要性能就得放弃动态类型嘛,反正有 cython,改静态类型也不难。 说回 typing,typing 就是通过提示来强化开发和使用的体验的。 至于 typing 的学习成本,反正我都是现用现查现学现封装现扔的,我觉得大家也可以这么弄。
|