如何看待类型提示?

2020-06-27 20:59:53 +08:00
 yzk66880
目前我已知的类型提示带来的好处:
- debug 时的错误提示,结合编辑器也会有注释提示等
- 提升可读性、维护性
- ... (请教大家补充~)
还有就是最近的 web 框架 fastapi, 如果按照 pydantic 的类型提示和数据建模的话可以自动生成符合 OpenAPI 标准的 swagger 调试文档。个人感觉这个还是很有用的。

但是类型提示不是类型声明,对提升性能也无用处,大家觉得 python 这个动态语言有必要养成写类型提示的习惯吗?

说道可读性,其实 typing 模块有些定义的可读性不是那么一目了然,也需要一定的学习成本...

希望听听大家的看法
2022 次点击
所在节点    Python
9 条回复
nightwitch
2020-06-27 22:31:06 +08:00
写起来也方便点啊。 假如你确定下面这个函数只接收字符串,当然最好加上。不加的话,编辑器没法推断 s 的类型,也没法给出更好的补全提示。
def process_string(s):
return s.do_something()
szzhiyang
2020-06-27 23:10:18 +08:00
可以参考我之前发的两个帖子下的讨论:

《同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?》

t/606977

《大家是如何实时检查 Python 变量类型的?》

t/602617
szzhiyang
2020-06-27 23:11:18 +08:00
可以参考我之前发的两个帖子下的讨论:

《同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?》

https://www.v2ex.com/t/606977

《大家是如何实时检查 Python 变量类型的?》

https://www.v2ex.com/t/602617
yzk66880
2020-06-28 09:08:05 +08:00
@szzhiyang 好的 感谢~
fhsan
2020-06-28 09:58:06 +08:00
写文档和类型检查必须的啊,项目大了多了,一个负责几个系统,前后端,
如果每次都靠运行才能知道参数和返回值是什么样的,那不得累死
ungrown
2020-06-28 10:21:26 +08:00
其实你一上来就相当准确地概括了当前阶段类型提示的意义和价值:提示(废话,拖走……
提示开发者,提示用户,提示 IDE 软件,比如 pycharm 和 pycharm 用户们就确确实实能从 typing 获益匪浅。
至于性能,提示只是提示,动态类型还是动态类型,运行时类型检测该绕不开还是绕不开,肥胖且非线性的数据结构导致的 CPU 缓存命中该 miss 还是 miss 。
cpython 的性能就这么回事了,高 IO 应用基本不拖后腿,高 CPU 应用肯定拖后腿,如果这后腿拖不起的话就老老实实写 C 扩展。说白了要性能就得放弃动态类型嘛,反正有 cython,改静态类型也不难。
说回 typing,typing 就是通过提示来强化开发和使用的体验的。
至于 typing 的学习成本,反正我都是现用现查现学现封装现扔的,我觉得大家也可以这么弄。
yzk66880
2020-06-28 11:44:37 +08:00
@ungrown 谢谢,的确是这样的现状
wuwukai007
2020-06-28 18:59:50 +08:00
多人项目 用,自己项目真的懒得写,实话
yzk66880
2020-06-28 20:02:37 +08:00
@wuwukai007 hhhh 真相

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/685104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX