2020 年了,各位拥抱 Python 的类型注释了么?

2020-05-09 11:06:15 +08:00
 guyeu

知乎上有个几年前的问题,那时候不用 type hint 的原因主要有以下几点:

2020 年的今天,上述的有些问题应该已经没了,剩下的问题是不是依然阻碍使用 type hint 呢?

7642 次点击
所在节点    Python
46 条回复
no1xsyzy
2020-05-09 19:01:40 +08:00
@zhustec #40 不能同意更多,写着写着突然说未定义,意识到需要加引号,也是心智负担。
所以我拿注解只用来解析 JSON API,写完 dataclass 以后
dacite.from_dict(SomeDataClass, some_dict) 就能把它变成一个 dataclass,支持 List Optional Union 等一众 typing 辅助项。
reedthink
2020-05-09 19:11:23 +08:00
方向错了
hspeed18
2020-05-09 19:16:45 +08:00
要 type hint 为什么不直接用静态语言
levelworm
2020-05-10 04:05:30 +08:00
一直在用,主要是给自己看,不然过一阵子未必回忆的起来。
skinny
2020-05-10 08:13:36 +08:00
有的代码用,觉得非常非常丑 + 麻烦,而且很多功能 docstring 也可以解决,更精简。至于 IDE 支持,我就遇到过连 PyCharm 都根本不识别的情况(比如 ThreadPoolExecutor ),现在好像已经修复了。

有的类型你一写容易变得非常长,加上名字还不能短,名字短有的你会忘记到底是干什么的,跟没有一样,也不是非常复杂的数据结构,就字典这种,虽然你可以单独在一行构建类型,后面使用,但是一层层套下来也是不够直观的,而且很多时候一个参数一行都很长,类型就占了大半,还多半用处不大,而且你用 PyCharm 看还是得各种跳转。即便你写了类型,很多时候依然要做运行时检查,比如类似于 reuquests.get 的 params 这种参数。

写着写着你会觉得代价太高收益太低,也不是什么大项目,有这需求干嘛不换一个语言,大部分工作人家编译期间就做完了。
TransAM
2020-05-15 17:49:53 +08:00
@6ugman 自定义协议呢?比如我的协议 a 包含 b 和 c 两个方法,怎么标

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

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

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

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

© 2021 V2EX