动态类型的语言用第三方的库,到底如何确定返回值类型?

251 天前
 voidmnwzp

没怎么用过动态类型语言写项目,最近的项目要用到 openai 相关的 api 接口,直接就动手撸 py 了,但是每次调没有 type Hints 第三方轮子返回的数据又不知道如何用,点进源码也是乱七八糟的各种调用,也没有 ide 提示,这就很麻烦了

3223 次点击
所在节点    Python
32 条回复
szzhiyang
251 天前
无解,赶紧转 Go 语言。
lanlanye
251 天前
如果你知道接口应该返回什么类型,可以在声明变量的时候自己加上注解,这样至少之后的代码能有提示。
dayeye2006199
251 天前
Python 是这样的,只能看 API 文档了
szzhiyang
251 天前
咦,你不是主用 Go 吗?为啥用 Python ?
voidmnwzp
251 天前
openai 官方有 py 的库,调用起来比较方便,go 的话还要写轮子
Sinksky
251 天前
Typehint 、翻文档、看别人怎么用的、全局搜索找定义。。
flyqie
251 天前
弱类型都这样,你说的这些如果实现了,那还叫啥弱类型。。

楼上说的很全面了,最好还是直接看源码,没有源码的话只能看文档。
lonewolfakela
251 天前
实在不好弄直接开调试器看……
flyqie
251 天前
@lonewolfakela #8

弱类型经典且好用的调试方法:

开调试器/打印出来类型看看
dayeye2006199
251 天前
不怕麻烦的话,可以给原库加上 typeddict -- https://peps.python.org/pep-0589/
lsry
251 天前
深有同感吗,不只是返回值,如果使用某个函数带参数,甚至都不知道怎么传参
mahaoqu
251 天前
动态类型语言当然是开发的时候就用 REPL 啦,要不然 IPython 弄的那么精致是为了什么
oldshensheep
251 天前
Python 现在也支持声明类型,不过现在用的库比较少。
说实话我特别讨厌写 Python 调用别人的库,基本上总是要看源码,看文档,看文档一般是打开网页看。
写 Python 基本上一直在 debug ,然后摸石头过河……

Python 的话基本上都喜欢一个 dict 走天下,dict 里有什么全靠文档,什么类型不存在的。
现在我写代码别人的变量都加上 Typehint ,没有代码提示写代码都提心吊胆。不过也不是所有地方都有确定的数据结构……
lhbc
251 天前
@flyqie Python 是典型的强类型
ochatokori
251 天前
当然是控制台打印出来看
bybyte
251 天前
写习惯了 c/c++/golang 写 python 相当难受。。。
mPatrickStar
251 天前
看文档、跳转看源码、debug 、依靠熟悉程度。
wipbssl
251 天前
@flyqie python 是强类型,动态类型。
mmdsun
250 天前
对接 OpenAI 我看了一圈选择的 Java ,spring webflux 项目只需要一句话,还支持 SSE 。

```
@PostMapping(value = "/completions-web-client", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> completionsWebClient(@RequestBody @Valid ChatRequest request) {
ParameterizedTypeReference<ServerSentEvent<String>> type = new ParameterizedTypeReference<>() {
};
return webClient.post()
.uri("/v1/chat/completions")
.bodyValue(request)
.header("Authorization", "Bearer " + chatGptConfig.getOpenAi().getApiKey())
.retrieve()
.bodyToFlux(type);
}
```
ruanimal
250 天前
@bybyte 反之亦然

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

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

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

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

© 2021 V2EX