大家现在写 Python , 用类型注解吗

2024-04-24 16:57:32 +08:00
 iorilu

想了解下看看, 可以是几种情况

我现在也就是第二种把, 想起来就用一点 , 也没强制整个项目都用,现在想要不要升级下, 更严格一点呢

5357 次点击
所在节点    Python
57 条回复
vituralfuture
2024-04-24 20:21:05 +08:00
借个楼,各位写 typehint 的时候遇到异步生成器函数没有实现的的情况下如何处理的

异步生成器,即函数体有 yield 的异步函数,没有实现即它的具体实现在子类中,父类仅仅提供一个接口。如果使用诸如 mypy 这样的严格静态类型检查器,只写个 pass ,因为没有 yield 语句,mypy 就会认为返回类型不是生成器所以报错

我想到了一个办法就是 yield from 这个函数自己,让 mypy 自己绕圈去,但感觉不够优雅,说到底还是破坏了可读性,用 pass 可以表示函数体为空,没有逻辑。而 yield from 有迷惑性
jfcherng
2024-04-24 20:29:15 +08:00
@vituralfuture #21

def f():
... return
... yield
jfcherng
2024-04-24 20:33:22 +08:00
@vituralfuture #21 不對啊 具體實現在子類的話, 直接 @abstractmethod 不就完事了麼
chengxiao
2024-04-24 20:50:01 +08:00
都写注解了 我为什么不用 golang
wupher
2024-04-24 21:06:14 +08:00
最开始是一点不用。那时 py , Ruby, js ,更习惯于 duck type 。

后来习惯了 Kotlin, Go ,现在尽量全部用。
vincent7245
2024-04-24 21:36:51 +08:00
用,而且我规定公司所有 Python 项目都得用
sunrisewestern
2024-04-24 22:00:41 +08:00
用 AI 加类型提示
lijiangang886
2024-04-24 22:04:13 +08:00
一个直观的体验提升:写类型注解可以帮助 IDE 进行更好的静态分析,从而提升补全等功能的体验
XueXianqi
2024-04-24 22:05:48 +08:00
response: str = "写,都写,不然就是 “不写一时爽,维护火葬场”"
print(response)
jiayouzl
2024-04-24 22:16:27 +08:00
工作代码用,自己用的代码从来不写.
ktyang
2024-04-24 22:24:08 +08:00
比 2 强比 3 差。。。基本重要的都会用
mark2025
2024-04-24 22:32:52 +08:00
有了那么好的 TS ,还是不少人喜欢无类型的 JS ,py 一样的 ~
AV1
2024-04-24 22:40:11 +08:00
跟 TS 、JSDOC 一样,编辑器能自动推导的类型不写,只写不能自动推导的类型。
因为编辑器提供智能提示,非常爽。🐶

v1 = 'string' # 这里不写
v2 = 1 # 这里也不用写

def func(arg: SomeType) # 参数不能自动推导,要写。返回值能自动推导,不写。
MiketsuSmasher
2024-04-24 22:40:23 +08:00
@vituralfuture #21 你要做的应该是个抽象类,不如直接用 abc.ABCMeta 作为父类的元类, @ abc.abstractmethod 装饰这个方法,代码块里 raise NotImplementedError ,反正抽象类也不能直接初始化。mypy 也应该识别得到这种情况。
so1n
2024-04-24 22:58:06 +08:00
写,检查工具也用上
levelworm
2024-04-24 23:05:00 +08:00
我觉得有点复杂的是那种库里头的类型,有时候需要写成 abc.cde.deg 这种一长串——当然可以通过 import 来解决,但是还是觉得很麻烦。C 就没这个问题。
nuk
2024-04-24 23:26:56 +08:00
不用,给自己套枷锁干啥
ztmzzz
2024-04-25 00:07:29 +08:00
ide 不能自动提示的时候写
locoz
2024-04-25 02:35:40 +08:00
无所谓,反正就是按个 Tab 的事情,打个冒号/横杠给 AI 起个头,AI 就会自己解决这个问题,基本不需要费脑子人工调整。除了那种封装的比较深的框架里的东西 AI 都搞不明白要标啥的以外,其他东西基本都顺手就标了注解。
jiyan5
2024-04-25 08:30:27 +08:00
写不写都行,反正都能运行,不是太想写

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

https://ex.noerr.eu.org/t/1035332

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

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

© 2021 V2EX