Python 也在考虑添加声明类型的支持了

2016-08-16 16:24:55 +08:00
 vicalloy
https://www.python.org/dev/peps/pep-0526/
早些年脚本语言( PHP 、 Python 、 Ruby 、 JS )发展势头不错,到这几年新出的( Go 、 Rust 、 Swift )都是静态语言。
由于缺乏类型声明,脚本语言在编译阶段能检查出的问题太少了。
象 Swift 那样类型声明外加强大自动类型推导,再配上优秀的 IDE 写起来还是很舒服的。
4490 次点击
所在节点    Python
19 条回复
sudoz
2016-08-16 16:33:07 +08:00
Pycharm 新版已经引入了类型检查
hosiet
2016-08-16 17:44:15 +08:00
py2 不亡,类型声明便无法推行
vicalloy
2016-08-16 18:05:18 +08:00
@hosiet 现在主流库都支持 py3 了,新项目用 py3 没啥问题。
janxin
2016-08-16 19:21:08 +08:00
这个只是用来类型检查的,不要想太多。这个应该也可以用在 py2 上
zhuangzhuang1988
2016-08-16 19:53:10 +08:00
@hosiet
可以写在文档里面, 然后用 mypy 做出检查
loading
2016-08-16 20:15:12 +08:00
反正我已经在开发我第一个 golang 程序了…
2225377fjs
2016-08-16 20:18:48 +08:00
如果只是 hint 的话, pycharm 已经做的挺不错了,而且我们的编码规范一直都遵循。。。
例如:
"""
:type _can_accept_task: dict[int, TaskContext]
:type _runing_task: dict[int, TaskContext]
"""
上面是工程的一段代码注释,其实就是起到类型 hint 的功能。。


我没看错的话,应该 Python 应该不是要支持静态类型检查吧。。。
bombless
2016-08-16 20:58:35 +08:00
这个是给解释器和 ide 来推导程序的行为的。
ide 智能提示可以用上,解释器也可以利用这些信息。

一般叫 hint 吧, php 也有
vicalloy
2016-08-16 22:13:26 +08:00
@2225377fjs 写在注释里太不自然了,如果能原生支持要好很多。
franklinyu
2016-08-17 00:15:37 +08:00
並不是「聲明」類型,只是 hint 。「聲明」的意思是會出 error 的,這個 hint 最多給你個 warning 。
ljbha007
2016-08-17 00:22:10 +08:00
有人研究过 动态语言的大量开源项目 其中因为类型错误导致的 BUG 不到 2%
crytis
2016-08-17 00:46:58 +08:00
@sudoz 哪个版本?
janxin
2016-08-17 01:15:32 +08:00
@ljbha007 因为大部分跑个测试就找出来了。在代码补全上用会更好。
sudoz
2016-08-17 01:23:59 +08:00
@crytis 2016.2
echo1937
2016-08-17 02:48:55 +08:00
@ljbha007 能给一下出处吗?
vicalloy
2016-08-17 08:55:54 +08:00
确切的说确实是注解,不是声明。
@ljbha007 关键不是导致错误,主要还是 IDE 智能化的问题。
即使是目前智能化程度最高的 PyCharm ,所能给出的智能化提示及检查的程度都远低于 XCode 及 IDEA 。
shyling
2016-08-17 09:02:32 +08:00
有什么用。。很多 pythonist 连 py 有哪些类型都不知道。。
个人觉得 typing 够用了
ljbha007
2016-08-18 11:06:59 +08:00
@echo1937 找不到了 只把结果记下来了
crytis
2016-09-11 21:06:30 +08:00
@sudoz flask 的 request 的 args ,用 pycharm 为啥不提示有 get 这个方法呢?

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

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

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

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

© 2021 V2EX