很奇怪啊,我问 AI 的话,它总是说给变量加类型注解更好,说什么现代 Python 大型项目都这样做,Python 官方也推荐,但是我让它推荐几个项目,我去看源码,没有任何一个开源项目对变量写了类型注解,而且 AI 的代码也不会有对变量的类型注解。但实际上根本没有任何项目这样做,至少我找不到。
1
Muniesa 10 小时 24 分钟前 via Android
函数返回值的类型注解写好了的话,一般变量就不用写了吧,我是这么理解的
|
2
kneo 10 小时 19 分钟前 via Android
我也没见过。class 字段,函数签名,足够了。变量的类型提示很可能是 anti-pattern 。
|
3
shadowmeld OP 我从开始学 Python ,就听 AI 的建议,推荐变量都加上类型注解,而且很多博客帖子都推荐,我后面看了越来越多别人的源码,发现根本没有项目给函数内部的变量写注解,我就很困惑,这不是所谓的“推荐的,现代的、更好维护” 的写法吗?结果根本没人这样做,我感觉费时费力的写法原来没有人这样写
|
4
blakezhaothinks 10 小时 16 分钟前
类型注解跟单元测试一样,除非项目一开始的时候就加上,不然后期补是很困难的。
|
5
AV1 10 小时 6 分钟前
一般也就函数参数需要注解,变量、返回值都可以自动推导,不写影响不大。
我写 TS 也是这样,能自动推导就自动推导。要是写得面面俱到那还不如写 java 了。 |
6
songer 10 小时 4 分钟前 基本只对函数的参数和返回值做注解,然后就是大量用 dataclass / pydantic 替代 dict tuple 。用上 mypy 。基本可以了
|
7
adoal 10 小时 2 分钟前
因为有影响力的开源项目大多数都有不短的年份积累了。老项目没用上现代的东西很正常。
我看过用 Python 做业务类系统开发的本地草台小公司,类型注解写得很满。 |
8
maocat 10 小时 0 分钟前
类型注解是 Python3.5 之后有的,刚出开,都认为不太成熟,大家都不敢用,大型项目基本都经历过 python2 的时代,一般都是在注释里解释参数,后来或多或少都很少补充类型了。可以没有,也不关键
相对于 Type Hints ,pyproject.toml 才是大型系统升级的关键 |
9
deplives 9 小时 59 分钟前
现在你看到的 python 大型项目已经有很多年的代码历史了,不是有人有精力去维护这些的
|
10
iorilu 9 小时 44 分钟前
老项目没空加的
这东西可能加了没啥好处, 但会带来 bug |
11
Rush9999 9 小时 42 分钟前
挺好奇,推荐哪几个项目啊?
现在 numpy ,pandas 都有变量类型了,像 dify,vllm 等比较新的项目也都有。 github 里 action 或者 pre-commit-config 里有 mypy 的项目 几乎都有变量类型 吧 |
12
smlcgx 9 小时 36 分钟前 via iPhone
这玩意应该属于不加没什么,但是错了会很麻烦的东西吧
|
13
shadowmeld OP @Rush9999 都没有啊,你说的这几个我随便进去找一个 .py 里面的变量都不写类型注解的
|
14
aloxaf 7 小时 37 分钟前
仔细看了下,LZ 说的是给「变量」加类型注解,这完全没必要,舍本逐末了。
Python 的类型注解并不强制检查,只要是内部变量 + 能自动推断出来,就没必要加。 |