
想了解下看看, 可以是几种情况
我现在也就是第二种把, 想起来就用一点 , 也没强制整个项目都用,现在想要不要升级下, 更严格一点呢
1 qs 2024 年 4 月 24 日 第三种吧,对于一些没注解的第三方函数会给变量加注解 |
2 gray0 2024 年 4 月 24 日 函数入参/返回值 |
3 ZXiangQAQ 2024 年 4 月 24 日 入参、出参会注解一下,反正以前也要写 docstring ,直接写注解 docstring 就不需要写类型了,挺方便的 |
4 NoOneNoBody 2024 年 4 月 24 日 能用就用,主要是 pyright 跟踪比较方便 但 Union 这种就不想写了,还要 import |
5 vicalloy 2024 年 4 月 24 日 函数都写,变量不一定。 加了注解后 IDE 更智能,而且配合 mypy 可以检查出不少问题。 |
6 Hopetree 2024 年 4 月 24 日 说实话,很浪费时间,虽然严谨一点,但是很影响效率。如果是公司的项目有要求,我会写,但是自己的项目绝对不写,Python 的优势本来就是灵活、快 |
7 Orchestraa 2024 年 4 月 24 日 第三种 |
8 786375312123 2024 年 4 月 24 日 如果想要类型安全,为什么不直接用静态类型语言 |
9 jqtmviyu 2024 年 4 月 24 日 最好函数入参返回都写. 在别人的开源项目上加功能. 结果函数名写的复数, 入参既有 str 又有 list, 难绷. |
10 inhzus 2024 年 4 月 24 日 intelligence 不能推导出类型的就写 |
11 VforVendetta 2024 年 4 月 24 日 自己的项目第二种,公司项目第四种 |
12 leonshaw 2024 年 4 月 24 日 放弃了,根本写不明白,Union 满天飞,Dict 里面到底是啥,各种 Callable ,更别提 *, ** 的转发了。 |
14 Muniesa 2024 年 4 月 24 日 via Android 想起来就写,主要是为了 IDE 的自动补全 |
15 Nich0la5 2024 年 4 月 24 日 用 不用过两天就忘了自己写了个啥了 |
16 djangovcps 2024 年 4 月 24 日 很难想象多层复合类对象,类中的属性又是其他的类对象,其他类对象又引用了别的对象,不用类型注解写代码没有联想的痛苦 |
17 yanyao233 2024 年 4 月 24 日 via Android 用,并且配合 pydantic ,简直爽歪歪 |
18 tomczhen 2024 年 4 月 24 日 都说 Python 灵活,写类型提示也可以灵活点,做二极管大可不必。 一次性脚本就根据需要 IDE 提示的地方写一下,比如字典取对象,写个提示方便后面代码编写。 验证的小项目参考上面,然后函数出参入参写一下。 如果是自己会长期维护,或者必然时间很久之后要修,那就能写的地方就写一下,之后再来看代码就好受点。 |
19 jfcherng 2024 年 4 月 24 日 ,因用 IDE 和各工具爽。另外就是不的,以後回看就是火葬。接手了人的代,什型都,各入完全不知道是什鬼,了一堆在猜。 |
20 plan9 2024 年 4 月 24 日 via iPhone 第三种 |
21 vituralfuture 2024 年 4 月 24 日 via Android 借个楼,各位写 typehint 的时候遇到异步生成器函数没有实现的的情况下如何处理的 异步生成器,即函数体有 yield 的异步函数,没有实现即它的具体实现在子类中,父类仅仅提供一个接口。如果使用诸如 mypy 这样的严格静态类型检查器,只写个 pass ,因为没有 yield 语句,mypy 就会认为返回类型不是生成器所以报错 我想到了一个办法就是 yield from 这个函数自己,让 mypy 自己绕圈去,但感觉不够优雅,说到底还是破坏了可读性,用 pass 可以表示函数体为空,没有逻辑。而 yield from 有迷惑性 |
22 jfcherng 2024 年 4 月 24 日 |
23 jfcherng 2024 年 4 月 24 日 @vituralfuture #21 不啊 具在子的, 直接 @abstractmethod 不就完事了 |
24 chengxiao 2024 年 4 月 24 日 都写注解了 我为什么不用 golang |
25 wupher 2024 年 4 月 24 日 最开始是一点不用。那时 py , Ruby, js ,更习惯于 duck type 。 后来习惯了 Kotlin, Go ,现在尽量全部用。 |
26 vincent7245 2024 年 4 月 24 日 via Android 用,而且我规定公司所有 Python 项目都得用 |
27/span> sunrisewestern 2024 年 4 月 24 日 用 AI 加类型提示 |
28 uGRiPVk3vSJ 2024 年 4 月 24 日 一个直观的体验提升:写类型注解可以帮助 IDE 进行更好的静态分析,从而提升补全等功能的体验 |
29 XueXianqi 2024 年 4 月 24 日 response: str = "写,都写,不然就是 “不写一时爽,维护火葬场”" print(response) |
30 jiayouzl 2024 年 4 月 24 日 工作代码用,自己用的代码从来不写. |
31 ktyang 2024 年 4 月 24 日 比 2 强比 3 差。。。基本重要的都会用 |
32 mark2025 2024 年 4 月 24 日 有了那么好的 TS ,还是不少人喜欢无类型的 JS ,py 一样的 ~ |
33 AV1 2024 年 4 月 24 日 跟 TS 、JSDOC 一样,编辑器能自动推导的类型不写,只写不能自动推导的类型。 因为编辑器提供智能提示,非常爽。 v1 = 'string' # 这里不写 v2 = 1 # 这里也不用写 def func(arg: SomeType) # 参数不能自动推导,要写。返回值能自动推导,不写。 |
34 MiketsuSmasher 2024 年 4 月 24 日 @vituralfuture #21 你要做的应该是个抽象类,不如直接用 abc.ABCMeta 作为父类的元类, @ abc.abstractmethod 装饰这个方法,代码块里 raise NotImplementedError ,反正抽象类也不能直接初始化。mypy 也应该识别得到这种情况。 |
35 so1n 2024 年 4 月 24 日 写,检查工具也用上 |
36 levelworm 2024 年 4 月 24 日 我觉得有点复杂的是那种库里头的类型,有时候需要写成 abc.cde.deg 这种一长串当然可以通过 import 来解决,但是还是觉得很麻烦。C 就没这个问题。 |
37 nuk 2024 年 4 月 24 日 不用,给自己套枷锁干啥 |
38 ztmzzz 2024 年 4 月 25 日 ide 不能自动提示的时候写 |
39 locoz 2024 年 4 月 25 日 via Android 无所谓,反正就是按个 Tab 的事情,打个冒号/横杠给 AI 起个头,AI 就会自己解决这个问题,基本不需要费脑子人工调整。除了那种封装的比较深的框架里的东西 AI 都搞不明白要标啥的以外,其他东西基本都顺手就标了注解。 |
40 jiyan5 2024 年 4 月 25 日 写不写都行,反正都能运行,不是太想写 |
41 lLuO0WljRTqf 2024 年 4 月 25 日 不写,因为不好看。有点背离写 Python 代码简洁的初衷。 根据必要程度从低到高我一般会划分为以下几类: 1. 通过变量命名,比如(datalist)之类; 2. 在函数注解中标明; 3. 通过 if 对变量类型进行判断,或 raise Error ,或可传入不同类型来获取结果,常面对的场景就是可传文件或者字符串; 4. 某些特殊情况下通过 assert 卡住过往的值。 没错,就是不想写。因为敲起来很麻烦。看起来感觉不够简洁,不美。 个人之见。 |
42 Pters 2024 年 4 月 25 日 用啊,因为 copilot 自己就会带出来 |
43 moqsien 2024 年 4 月 25 日 不写 python 了,写 go ,哈哈 |
44 bwangel 2024 年 4 月 25 日 python 中装饰器挺常见的,我发现给装饰器写个类型注解还是挺困难的。 主要的困难点在于,要求装饰器修饰的函数,类型要一致。多人开发的时候,这个保证有点难。 |
45 Rebely 2024 年 4 月 25 日 用, 谁用谁爽 |
46 Zy143L 2024 年 4 月 25 日 via Android 先不写,然后 Ai 补全自动处理 |
47 uni 2024 年 4 月 25 日 写,目标是 vscode 开 basic 检查不报红 但是 vscode 里面的类型检查还是有不少 bug 的,复杂一点的类型体操就有可能出问题,也是无奈 |
48 gesse 2024 年 4 月 25 日 |
49 gauthier 2024 年 4 月 25 日 第三种,函数用。 |
50 xxxccc 2024 年 4 月 25 日 需要 code review 的写,不需要 code review 的不写 |
51 HashV2 2024 年 4 月 25 日 之前全用,现在写的一个项目要编译成 c ,如果类型注解写的不准确运行到这块的时候会报错,就很无语,导致现在这个项目的类型注解写的很谨慎 |
52 llsquaer 2024 年 4 月 26 日 看来大家都一样嘛。 我是函数中参数不能一眼看出来的就写。。没有智能提示的也写。方便自动提示。 |
53 craiiz 2024 年 4 月 26 日 函数, 变量所有全部用; 写完之后 pycharm 联想很舒服 |
54 Vaspike 2024 年 4 月 26 日 第四种,除非: 一眼就能看出什么类型的变量和根本找不到具体类型的变量(来自其他库的返回值) |
55 FYFX 2024 年 5 月 1 日 写,不过高阶函数那个 Callable 写着真恶心,我的感觉是 python 的类型推导太弱了,有些情况 typehint 写起来比静态类型还麻烦 |
56 moudy 2024 年 5 月 2 日 @NoOneNoBody #4 3.12 省事了很多,Union[list, None] 可以直接写成 list|None |
57 dule 2024 年 7 月 9 日 自己写的暂时没加,感觉代码可读性更差,略丑,都要强类型了写什么 python |