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

大型 Python 开源项目都不会对变量进行类型注解?

  •  
  •   shadowmeld · 10 小时 30 分钟前 · 780 次点击

    很奇怪啊,我问 AI 的话,它总是说给变量加类型注解更好,说什么现代 Python 大型项目都这样做,Python 官方也推荐,但是我让它推荐几个项目,我去看源码,没有任何一个开源项目对变量写了类型注解,而且 AI 的代码也不会有对变量的类型注解。但实际上根本没有任何项目这样做,至少我找不到。

    14 条回复    2026-03-26 19:51:50 +08:00
    Muniesa
        1
    Muniesa  
       10 小时 24 分钟前 via Android
    函数返回值的类型注解写好了的话,一般变量就不用写了吧,我是这么理解的
    kneo
        2
    kneo  
       10 小时 19 分钟前 via Android
    我也没见过。class 字段,函数签名,足够了。变量的类型提示很可能是 anti-pattern 。
    shadowmeld
        3
    shadowmeld  
    OP
       10 小时 16 分钟前
    我从开始学 Python ,就听 AI 的建议,推荐变量都加上类型注解,而且很多博客帖子都推荐,我后面看了越来越多别人的源码,发现根本没有项目给函数内部的变量写注解,我就很困惑,这不是所谓的“推荐的,现代的、更好维护” 的写法吗?结果根本没人这样做,我感觉费时费力的写法原来没有人这样写
    blakezhaothinks
        4
    blakezhaothinks  
       10 小时 16 分钟前
    类型注解跟单元测试一样,除非项目一开始的时候就加上,不然后期补是很困难的。
    AV1
        5
    AV1  
       10 小时 6 分钟前
    一般也就函数参数需要注解,变量、返回值都可以自动推导,不写影响不大。
    我写 TS 也是这样,能自动推导就自动推导。要是写得面面俱到那还不如写 java 了。
    songer
        6
    songer  
       10 小时 4 分钟前   ❤️ 1
    基本只对函数的参数和返回值做注解,然后就是大量用 dataclass / pydantic 替代 dict tuple 。用上 mypy 。基本可以了
    adoal
        7
    adoal  
       10 小时 2 分钟前
    因为有影响力的开源项目大多数都有不短的年份积累了。老项目没用上现代的东西很正常。

    我看过用 Python 做业务类系统开发的本地草台小公司,类型注解写得很满。
    maocat
        8
    maocat  
       10 小时 0 分钟前
    类型注解是 Python3.5 之后有的,刚出开,都认为不太成熟,大家都不敢用,大型项目基本都经历过 python2 的时代,一般都是在注释里解释参数,后来或多或少都很少补充类型了。可以没有,也不关键
    相对于 Type Hints ,pyproject.toml 才是大型系统升级的关键
    deplives
        9
    deplives  
       9 小时 59 分钟前
    现在你看到的 python 大型项目已经有很多年的代码历史了,不是有人有精力去维护这些的
    iorilu
        10
    iorilu  
       9 小时 44 分钟前
    老项目没空加的

    这东西可能加了没啥好处, 但会带来 bug
    Rush9999
        11
    Rush9999  
       9 小时 42 分钟前
    挺好奇,推荐哪几个项目啊?
    现在 numpy ,pandas 都有变量类型了,像 dify,vllm 等比较新的项目也都有。
    github 里 action 或者 pre-commit-config 里有 mypy 的项目 几乎都有变量类型 吧
    smlcgx
        12
    smlcgx  
       9 小时 36 分钟前 via iPhone
    这玩意应该属于不加没什么,但是错了会很麻烦的东西吧
    shadowmeld
        13
    shadowmeld  
    OP
       9 小时 31 分钟前
    @Rush9999 都没有啊,你说的这几个我随便进去找一个 .py 里面的变量都不写类型注解的
    aloxaf
        14
    aloxaf  
       7 小时 37 分钟前
    仔细看了下,LZ 说的是给「变量」加类型注解,这完全没必要,舍本逐末了。

    Python 的类型注解并不强制检查,只要是内部变量 + 能自动推断出来,就没必要加。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    ♥ Do have faith in what you're doing.