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
yzk66880
V2EX  ›  Python

如何看待类型提示?

  •  
  •   yzk66880 ·
    LouisYZK · 2020-06-27 20:59:53 +08:00 · 1836 次点击
    这是一个创建于 1370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前我已知的类型提示带来的好处:
    - debug 时的错误提示,结合编辑器也会有注释提示等
    - 提升可读性、维护性
    - ... (请教大家补充~)
    还有就是最近的 web 框架 fastapi, 如果按照 pydantic 的类型提示和数据建模的话可以自动生成符合 OpenAPI 标准的 swagger 调试文档。个人感觉这个还是很有用的。

    但是类型提示不是类型声明,对提升性能也无用处,大家觉得 python 这个动态语言有必要养成写类型提示的习惯吗?

    说道可读性,其实 typing 模块有些定义的可读性不是那么一目了然,也需要一定的学习成本...

    希望听听大家的看法
    9 条回复    2020-06-28 20:02:37 +08:00
    nightwitch
        1
    nightwitch  
       2020-06-27 22:31:06 +08:00
    写起来也方便点啊。 假如你确定下面这个函数只接收字符串,当然最好加上。不加的话,编辑器没法推断 s 的类型,也没法给出更好的补全提示。
    def process_string(s):
    return s.do_something()
    szzhiyang
        2
    szzhiyang  
       2020-06-27 23:10:18 +08:00
    可以参考我之前发的两个帖子下的讨论:

    《同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?》

    t/606977

    《大家是如何实时检查 Python 变量类型的?》

    t/602617
    szzhiyang
        3
    szzhiyang  
       2020-06-27 23:11:18 +08:00
    可以参考我之前发的两个帖子下的讨论:

    《同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?》

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

    《大家是如何实时检查 Python 变量类型的?》

    https://www.v2ex.com/t/602617
    yzk66880
        4
    yzk66880  
    OP
       2020-06-28 09:08:05 +08:00
    @szzhiyang 好的 感谢~
    fhsan
        5
    fhsan  
       2020-06-28 09:58:06 +08:00
    写文档和类型检查必须的啊,项目大了多了,一个负责几个系统,前后端,
    如果每次都靠运行才能知道参数和返回值是什么样的,那不得累死
    ungrown
        6
    ungrown  
       2020-06-28 10:21:26 +08:00
    其实你一上来就相当准确地概括了当前阶段类型提示的意义和价值:提示(废话,拖走……
    提示开发者,提示用户,提示 IDE 软件,比如 pycharm 和 pycharm 用户们就确确实实能从 typing 获益匪浅。
    至于性能,提示只是提示,动态类型还是动态类型,运行时类型检测该绕不开还是绕不开,肥胖且非线性的数据结构导致的 CPU 缓存命中该 miss 还是 miss 。
    cpython 的性能就这么回事了,高 IO 应用基本不拖后腿,高 CPU 应用肯定拖后腿,如果这后腿拖不起的话就老老实实写 C 扩展。说白了要性能就得放弃动态类型嘛,反正有 cython,改静态类型也不难。
    说回 typing,typing 就是通过提示来强化开发和使用的体验的。
    至于 typing 的学习成本,反正我都是现用现查现学现封装现扔的,我觉得大家也可以这么弄。
    yzk66880
        7
    yzk66880  
    OP
       2020-06-28 11:44:37 +08:00
    @ungrown 谢谢,的确是这样的现状
    wuwukai007
        8
    wuwukai007  
       2020-06-28 18:59:50 +08:00
    多人项目 用,自己项目真的懒得写,实话
    yzk66880
        9
    yzk66880  
    OP
       2020-06-28 20:02:37 +08:00
    @wuwukai007 hhhh 真相
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1421 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:47 · PVG 07:47 · LAX 16:47 · JFK 19:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.