Python 的类型提示越来越复杂了: Python3.13 又引入了类型注解新特性 - V2EX
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
zywscq
V2EX    Python

Python 的类型提示越来越复杂了: Python3.13 又引入了类型注解新特性

  •  1
     
  •   zywscq 2024-09-29 05:13:46 +08:00 6534 次点击
    这是一个创建于 381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为一个老 Python 开发,看了这篇 3.13 的类型注解新特性解读之后,头有点冷: https://medium.com/techtofreedom/7-new-typing-features-in-python-3-13-58caae5f2f10?sk=6ee66766ba372ea1f62b44a0ef08012d

    35 条回复    2024-10-15 13:28:40 +08:00
    passive
        1
    passive  
       2024-09-29 05:55:52 +08:00 via Android   13
    Whatever the world was like when I was 20 is perfect, everything before that is too old, everything after that is too new.
    billccn
        2
    billccn  
       2024-09-29 07:48:40 +08:00   1
    这些功能在很多其他语言里面都有,但非要取个跟其他语言都不一样的名字。。。
    tairan2006
        3
    tairan2006  
       2024-09-29 08:36:58 +08:00
    还好,反正 type hint 本来就是可选的

    但是这玩意我是真记不住…
    dragondove
        4
    dragondove  
       2024-09-29 08:54:32 +08:00
    @billccn 没明白是指哪几个特性,在其他语言里等价的概念是什么
    june4
        5
    june4  
       2024-09-29 08:59:23 +08:00   2
    以前写 py 还是没有类型注解的时候,现在一看 py 的类型好奇怪的样子,类型竟然还是具体的可导入可操作的实际对象,感觉是拿现成的锤子做了把剪刀,写多了 typescript 不知道 py 这种类型写起来是什么感觉,有没有类型体操
    zcf0508
        6
    zcf0508  
       2024-09-29 09:06:20 +08:00 via Android
    crackidz
        7
    crackidz  
       2024-09-29 09:17:00 +08:00
    还好吧,也没多很多很复杂的东西啊
    wangee
        8
    wangee  
       2024-09-29 09:36:55 +08:00 via iPhone
    如果只是这篇 blog 里面的东西,感觉没有添加太多东西
    panxi
        9
    panxi  
       2024-09-29 09:43:48 +08:00
    @zcf0508 好东西啊 大兄弟
    clino
        10
    clino  
       2024-09-29 09:49:12 +08:00
    等 AI 编程助手都支持了是不是就不太成为负担了
    nyxsonsleep
        11
    nyxsonsleep  
       2024-09-29 10:15:45 +08:00
    @june4 #5 python 类型是可选的,体验还是比 ts 好一点的。
    Hookery
        12
    Hookery  
       2024-09-29 10:41:22 +08:00
    动态语言在向静态语言贴贴,静态语言在向动态语言贴贴,啥时候整个大一统好了。。
    kneo
        13
    kneo  
       2024-09-29 10:48:53 +08:00 via Android
    逆水行舟,不进则退。
    est
        14
    est  
       2024-09-29 11:08:06 +08:00
    别的还好,就是 TypeIs 太 2 了。。。还不如做多态和 multi-dispatch 。。。
    leven87
        15
    leven87  
       2024-09-29 11:21:36 +08:00
    大佬们都买了 medium 会员吗,不是会员只能看个开头。
    nagisaushio
        16
    nagisaushio  
       2024-09-29 11:33:31 +08:00 via Android   17
    这是 OP 自己的文章,OP 大可不必装路人推广

    尤记得“国外一小哥”
    yy77
        17
    yy77  
       2024-09-29 11:34:19 +08:00
    可是 python 语言本身没有 type 检查呀。你再怎么写得完善,返回一个不一样的类型也不会报错。
    还得依靠 ide 或者 linter 。
    xgdgsc
        18
    xgdgsc  
       2024-09-29 14:23:24 +08:00 via Android
    @Hookery 已经有了 https://www.tongyuan.cc/release/syslab 可以把类型稳定的 Julia 代码编译成二进制或者 cpp 代码
    jackerbauer
        19
    jackerbauer  
       2024-09-29 14:47:23 +08:00
    花里胡哨的
    NoOneNoBody
        20
    NoOneNoBody  
       2024-09-29 14:55:29 +08:00
    通篇没有用到 pandas 的 namespace ,为了检查 dataframe 类型,还要 import 一次,这是我最头疼的地方
    Ocean810975
        21
    Ocean810975  
       2024-09-29 15:09:27 +08:00   1
    @leven87 #15 作者给的分享链接是 friend link ,按理说你注册了不开会员也能看,或者你有啥防跟踪浏览器扩展给「?sk=xxx 」那部分移除了。
    relsoul
        22
    relsoul  
       2024-09-29 17:45:22 +08:00
    @june4 写的很乱七八糟...体验不如 ts ,都需要 import ,而且定义 type[] 这种的不如 ts 好写,有一瞬间会让我感觉 类型不是提示吗 怎么跟个实际变量一样.... 而且定义嵌套类型太麻烦了,我直接选择用 pydantic 定义 还方便,运行时也有对应的提示,直接完爆默认的 python 类型定义,(虽然 pydantic 也要基于 python 的类型使用,但是至少让我写起来是一个 d.ts 的感觉)
    abc1310054026
        23
    abc1310054026  
       2024-09-29 18:05:25 +08:00   1
    OP medium 上 1w 多的 follower 还需要搞这种迎流吗。。。
    ferock
        24
    ferock  
    PRO
       2024-09-29 18:57:13 +08:00 via iPhone   2
    自己看自己写的文章以后自己头有点冷?干嘛自虐?
    AV1
        25
    AV1  
       2024-09-29 22:12:27 +08:00
    类型检查+自动推导 是大势所趋。
    现在新出的编程语言,类型检查+自动推导 基本都是标配了。
    老一辈编程语言 python 、js 、lua 要是不想被历史抛弃,也都推出自己的类型系统了。
    est
        26
    est  
       2024-09-29 22:15:15 +08:00
    @nagisaushio
    @Ocean810975
    @abc1310054026
    @ferock

    这几位老哥火眼金睛。。。
    mark2025
        27
    mark2025  
       2024-09-29 22:31:09 +08:00
    @DOLLOR ts 的类型,js 的灵活,感觉太好用了
    nagisaushio
        28
    nagisaushio  
       2024-09-29 22:43:34 +08:00 via Android   1
    @est 这 op 发了好几次我都记住 id 了
    Trim21
        29
    Trim21  
       2024-09-29 23:21:46 +08:00
    这 ReadOnly 居然只能给 TypedDict 用。。。
    XIVN1987
        30
    XIVN1987  
       2024-09-30 08:46:26 +08:00
    这个没办法,,所有编程语言都有这个趋势,,越来越复杂、语法规则越来越多。。

    唯一的例外是 C ,,几十年了语法很少扩展。。不过除了写驱动的、写嵌入式的,,应该很少有人用 C 了。。
    nianlifeixing
        31
    nianlifeixing  
       2024-09-30 10:51:24 +08:00
    还好类型提示是非强制性的,我经常看到我同事写的函数的返回类型是不对的,不过丝毫不影响,属实是有点误解了
    ddddd0
        32
    ddddd0  
       2024-10-01 22:57:45 +08:00
    @nagisaushio #16 确实挺无语
    lolizeppelin
        33
    lolizeppelin  
       2024-10-11 11:15:07 +08:00
    我真 TM 服了...看了现在的兼容代码..以前只要区分 py2 和 py3...
    现在的兼容代码....直接喷了
    lolizeppelin
        34
    lolizeppelin  
       2024-10-11 11:17:41 +08:00
    @yy77
    typescript 还不是一条卵样....这有啥区别
    JFe2McRV85Ea9ao2
        35
    JFe2McRV85Ea9ao2  
       2024-10-15 13:28:40 +08:00
    @lolizeppelin #34 tsc 不检查类型?而且 python 的问题为什么要扯到 ts

    -- 有种以前讨论华为扯上小米的感觉,这种既视感太强了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5465 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 08:02 PVG 16:02 LAX 01:02 JFK 04:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86