V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
vicalloy
V2EX  ›  Python

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

  •  
  •   vicalloy ·
    vicalloy · 2016-08-16 16:24:55 +08:00 · 4476 次点击
    这是一个创建于 3022 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://www.python.org/dev/peps/pep-0526/
    早些年脚本语言( PHP 、 Python 、 Ruby 、 JS )发展势头不错,到这几年新出的( Go 、 Rust 、 Swift )都是静态语言。
    由于缺乏类型声明,脚本语言在编译阶段能检查出的问题太少了。
    象 Swift 那样类型声明外加强大自动类型推导,再配上优秀的 IDE 写起来还是很舒服的。
    19 条回复    2016-09-11 21:06:31 +08:00
    sudoz
        1
    sudoz  
       2016-08-16 16:33:07 +08:00
    Pycharm 新版已经引入了类型检查
    hosiet
        2
    hosiet  
       2016-08-16 17:44:15 +08:00 via Android
    py2 不亡,类型声明便无法推行
    vicalloy
        3
    vicalloy  
    OP
       2016-08-16 18:05:18 +08:00 via iPhone
    @hosiet 现在主流库都支持 py3 了,新项目用 py3 没啥问题。
    janxin
        4
    janxin  
       2016-08-16 19:21:08 +08:00 via Android
    这个只是用来类型检查的,不要想太多。这个应该也可以用在 py2 上
    zhuangzhuang1988
        5
    zhuangzhuang1988  
       2016-08-16 19:53:10 +08:00
    @hosiet
    可以写在文档里面, 然后用 mypy 做出检查
    loading
        6
    loading  
       2016-08-16 20:15:12 +08:00 via Android
    反正我已经在开发我第一个 golang 程序了…
    2225377fjs
        7
    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
        8
    bombless  
       2016-08-16 20:58:35 +08:00 via Android
    这个是给解释器和 ide 来推导程序的行为的。
    ide 智能提示可以用上,解释器也可以利用这些信息。

    一般叫 hint 吧, php 也有
    vicalloy
        9
    vicalloy  
    OP
       2016-08-16 22:13:26 +08:00 via iPhone
    @2225377fjs 写在注释里太不自然了,如果能原生支持要好很多。
    franklinyu
        10
    franklinyu  
       2016-08-17 00:15:37 +08:00
    並不是「聲明」類型,只是 hint 。「聲明」的意思是會出 error 的,這個 hint 最多給你個 warning 。
    ljbha007
        11
    ljbha007  
       2016-08-17 00:22:10 +08:00
    有人研究过 动态语言的大量开源项目 其中因为类型错误导致的 BUG 不到 2%
    crytis
        12
    crytis  
       2016-08-17 00:46:58 +08:00 via iPhone
    @sudoz 哪个版本?
    janxin
        13
    janxin  
       2016-08-17 01:15:32 +08:00 via iPhone
    @ljbha007 因为大部分跑个测试就找出来了。在代码补全上用会更好。
    sudoz
        14
    sudoz  
       2016-08-17 01:23:59 +08:00
    @crytis 2016.2
    echo1937
        15
    echo1937  
       2016-08-17 02:48:55 +08:00 via iPhone
    @ljbha007 能给一下出处吗?
    vicalloy
        16
    vicalloy  
    OP
       2016-08-17 08:55:54 +08:00
    确切的说确实是注解,不是声明。
    @ljbha007 关键不是导致错误,主要还是 IDE 智能化的问题。
    即使是目前智能化程度最高的 PyCharm ,所能给出的智能化提示及检查的程度都远低于 XCode 及 IDEA 。
    shyling
        17
    shyling  
       2016-08-17 09:02:32 +08:00 via iPad
    有什么用。。很多 pythonist 连 py 有哪些类型都不知道。。
    个人觉得 typing 够用了
    ljbha007
        18
    ljbha007  
       2016-08-18 11:06:59 +08:00
    @echo1937 找不到了 只把结果记下来了
    crytis
        19
    crytis  
       2016-09-11 21:06:30 +08:00
    @sudoz flask 的 request 的 args ,用 pycharm 为啥不提示有 get 这个方法呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:57 · PVG 07:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.