在使用 python 编程写项目、做数据分析和深度学习任务的过程中感觉如果可以把 python 这样的语言设计成为强类型的语言。 在各种使用 import 各种第三方库时可以更准确地给出 api 的提示,同时也不再依赖于类库开发者的源码注释,就可了解需要传哪些参数进去。在写代码的时候也能防止类型不匹配的 bug 出现。 v 友们有没有这种感觉呢?
1
ipwx 2021-03-20 19:55:08 +08:00
你需要 type annotation + pycharm 这种 ide 。在写代码的时候得到的体验和强类型语言没啥区别。
|
2
secondwtq 2021-03-20 19:55:18 +08:00 2
可是 Python 本来(一般来说)就是强类型的啊 ...
|
3
xiri 2021-03-20 19:59:33 +08:00
Python 本来就是强类型语言啊,反而 C 语言是弱类型的,,,,
你是不是把动态、静态和强、弱类型搞混了 |
4
iConnect 2021-03-20 20:00:06 +08:00 via Android
动态类型、强类型 ,应该是不一样的概念
|
5
zjsxwc 2021-03-20 20:07:26 +08:00
python 本来就是强类型
|
6
xpde OP 更正一下,是动态类型,本人突发奇想,没仔细检查搞混了
|
7
Jirajine 2021-03-20 20:21:51 +08:00 via Android
typehint + pylance
|
8
zjsxwc 2021-03-20 20:29:21 +08:00 via Android
可能楼主找到是 nim 语言,静态强类型,又像 python
|
9
jones2000 2021-03-20 21:44:18 +08:00
感觉楼主你要的不是编程, 是需要一个强大的插件, 你只要调参就可以了。 什么数据格式,数据导入,模型选择等等全部插件自动识别搞定,自己输入参数就能出结果。
|
10
xpde OP @jones2000 哈哈,没懒到那个程度,自己还是写过不少工具软件的。去年主要在写 java,始终有上面的想法罢了
|
12
xpde OP @ipwx 针对没有使用 type annotation 的第三方库,只能针对自己写的那部分做类型申明,还是不太完美😂
|
13
cmdOptionKana 2021-03-20 23:05:10 +08:00
@xpde 假设真的有人做出了一个强制静态类型的 python (以下称为 staticPy),那么,这个 staticPy 能使用普通 python 的第三方库吗?
如果可以:那么普通 python 库如果就是你说的 “没有使用 type annotation 的第三方库”,那它怎样变成 staticPy ? 如果不行:那么意味着全部第三方库都需要重写,岂不是比目前的 type annotation 更麻烦? |
14
no1xsyzy 2021-03-20 23:14:09 +08:00
动态类型还仅仅指“变量的类型需要运行时才能确定”
我记得数据分析这块有几个库甚至依赖于“类型的构成需要运行时才能确定” |
15
echowuhao 2021-03-20 23:41:44 +08:00 via Android
f#
|
16
LeeReamond 2021-03-22 08:32:35 +08:00 2
楼主说的应该是静态类型。不过静态类型也有几种程度的静态类型,
第一层比较浅的,是你指定关键位置的特定类型,满足两个最小目标,其一是 runtime 可以动态检查是否所有输入都满足该类型,其二是使用 IDE 可以看到提示。这个就是目前 python 使用的方案,虽然 runtime 检查没有杀手级产品,mypy 并不好用,不过仅满足项目需求的侵入式检查框架自己实现成本也不太大,而 IDE 补全在 pycharm 里已经有,虽然对 sublime 用户并不友好,但总体来说堪用。 第二层完全静态,对于 python 是愚蠢且无意义的,动态是一项伟大的发明,这是动态语言后发但能逐渐蚕食静态类型语言的原因,因为它确实解决了静态的痛点。python 的设计哲学是高动态与强大的描述能力,对比 c++的哲学( Zero-Overhead Abstraction )可以明显感受到本质不同。别的不说,假如存在静态 python,它有良好的优化空间和高速的 JIT 解释器,但写代码时不是光标注`lst: list`就完事了,大多数时候你还要标注数组中储存对象的类型,比如`lst: list[int]`,从此以后你只能往 list 里面增加 int 类型,甚至无法添加 float 。你能接受吗?如果如此为什么我不使用其他语言? |
17
gnef 2021-03-22 16:11:33 +08:00
@LeeReamond Python 某种意义上不就是全程 Object 的 Java 吗?
|