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

为什么 Python 会有那么多人喜欢用?

  •  
  •   crc8 · 1 天前 · 10502 次点击

    自知道它,历经数年,不止一次,

    想喜欢它,去使用它,去学习它。

    直到今天,发现对它,爱不起来。

    究其原因:出错的时候,错误一坨坨,毫无美感可言。

    弃!

    154 条回复    2024-11-14 19:11:35 +08:00
    1  2  
    wuxinling
        101
    wuxinling  
       19 小时 44 分钟前
    说实话,游标卡尺问题在维护修改代码的时候确实使我脑壳疼,但是一通乱写跟写伪代码似的照样能跑,确实也挺爽。
    这东西写写小应用还行,上万代码行的应用开发维护成本未必比其它语言低吧?
    yangth
        102
    yangth  
       19 小时 42 分钟前
    你花任你花,我用 java8
    chendl111
        103
    chendl111  
       19 小时 41 分钟前
    @crc8 #23 来试试 cpp ?一堆报错,不显示真正原因
    hs444
        104
    hs444  
       19 小时 40 分钟前
    虽然 python 有我不喜欢的地方,但是“出错的时候,错误一坨坨,毫无美感可言”这个非要说的话都能算是优点,不然像 sql 一样来一个
    syntax error at or near ")" 位置:696
    才真的让人头疼
    Wongz
        105
    Wongz  
       19 小时 35 分钟前
    头一回见嫌弃报错详细的,定位不到问题怎么解决错误?再说了,想优雅提示出错和内容又不是做不到,项目没写罢了。你是终端用户,你应该去那个项目发 issue ,说作者对错误处理不够优雅,被围观别哭就好了
    uni
        106
    uni  
       19 小时 27 分钟前
    @crc8 #27 你换个国内源一次就能成功了,何必折腾
    shuax
        107
    shuax  
       19 小时 26 分钟前   ❤️ 1
    菜就多练
    bg7lgb
        108
    bg7lgb  
       19 小时 26 分钟前   ❤️ 1
    大项目?多大才算大项目 ?
    lambdaq
        109
    lambdaq  
       19 小时 24 分钟前   ❤️ 1
    @crc8 这是 py 出错吗?

    这是一个叫 pip 的包在告诉你网络出错了。

    网络问题罪魁祸首是你父母把你投胎到内网;

    pip 包这个报错的确丑,该骂。
    alexsz
        110
    alexsz  
       19 小时 21 分钟前
    不知道 OP 想表达什么
    xuanbg
        111
    xuanbg  
       19 小时 16 分钟前
    @nocmt 明确就算了吧,你从 V2 复制一段代码回去,能跑起来算我输。
    kpsanmao
        112
    kpsanmao  
       19 小时 6 分钟前
    @yingxiangyu 那就直接显示错误原因,然后后面有个详情,点击查看详细的信息用于排查问题。
    fanjk
        113
    fanjk  
       19 小时 0 分钟前
    吐槽的点和 Python 的缺点感觉不太搭边,硬找?
    ccfly
        114
    ccfly  
       18 小时 48 分钟前
    人不行怪路不平
    BALKIN
        115
    BALKIN  
       18 小时 45 分钟前
    在我用的几门语言里我觉得 Python 的报错信息是最友善的了。
    楼主觉得什么语言比较"优雅“呢?
    lyxxxh2
        116
    lyxxxh2  
       18 小时 39 分钟前
    打印异常栈不是很正常的吗? 其他语言也是这样啊。
    也不是完全没用,出了 bug,你可以直接定位到代码去测试,也提供了更多信息找问题。

    pip 不应该显示异常栈,如果他这么做。
    难道不会又被人喷,吃太饱,一个文字提示就没了,简单就算了,复杂的等死。
    到底给客户看还是给程序员看的。
    Geon97
        117
    Geon97  
       18 小时 38 分钟前
    菜就多练,怕报错就别玩
    gh110827
        118
    gh110827  
       18 小时 33 分钟前
    @xvrzhao 他做 AI 的包多,nodejs 好多没有
    LXGMAX
        119
    LXGMAX  
       18 小时 33 分钟前
    月经贴经验+1 告辞
    gh110827
        120
    gh110827  
       18 小时 33 分钟前
    @crc8 不写代码最优雅,都不会报错
    NeverBelieveMe
        121
    NeverBelieveMe  
       18 小时 15 分钟前
    今夕是何年?李子柒、竹鼠、川普,python 不好用,时光倒流 10 年了吗?
    sampeng
        122
    sampeng  
       18 小时 9 分钟前
    python 纯粹因为生态环境大所以大家爱用。

    反正我是不爱用的。python 是唯一一个我今天写了。3-4 个月后就忘记代码是什么意思了。无论我如何组织代码都无法逃离这个魔咒。。我写个 shell 都能 1 年后还能回来看明白逻辑。。。
    seenthewind
        123
    seenthewind  
       18 小时 5 分钟前
    我严谨的判断,你应该没写过 node.js 的大项目。

    那一个报错的日志你应该贴不进 v2 的回复框。
    laminux29
        124
    laminux29  
       17 小时 58 分钟前
    因为差生多、穷、贪婪,整个世界都这样。

    差生多的意思是,没有几个人会严谨对待数据类型、异常处理,导致 js 、python 这类语言风靡。一旦工程大了,最终害人害己。

    穷的意思是,项目资金少,人力贵,导致催需求,不会给工程师预留多少时间来规范化地处理需求。

    贪婪的意思是,催需求,缩减工期,减少人力支出,能减少资本家的成本支出。
    pioflight
        125
    pioflight  
       17 小时 48 分钟前
    垃圾引战帖能不能删啊,刷到这种内容我还以为在看小红书
    seagoat
        126
    seagoat  
       17 小时 40 分钟前
    哈哈。。
    这段话,把 python 换成任何其他一种语言都差不多吧~
    009694
        127
    009694  
       17 小时 29 分钟前 via iPhone
    op 真的是程序员吗?至少我觉得不适合干这一行。 抛错的堆栈信息都嫌看不懂的话,真的不适合干这一行,debug 能力太弱了
    Wh1t3zZ
        128
    Wh1t3zZ  
       17 小时 0 分钟前
    去水深火热吧
    coolmenu
        129
    coolmenu  
       16 小时 2 分钟前
    我喜欢 Fsharp ,没啥人用吧?不过干杂活,还是 Python 快。
    CassianVale
        130
    CassianVale  
       15 小时 16 分钟前
    天下武功唯快不破
    panxi
        131
    panxi  
       15 小时 11 分钟前
    @mayli #32 竟然还有人觉得堆栈信息打出来不友好, 我人麻了, 我觉得 go 可能更适合 up, 直接给 exit
    xuwen
        132
    xuwen  
       14 小时 58 分钟前
    op 包括楼下大部分人都没学几天 python ,更别说阅读过高质量的 python 开源项目了
    Justin3go
        133
    Justin3go  
       14 小时 55 分钟前
    Python:可运行的伪代码
    huanruiz
        134
    huanruiz  
       14 小时 54 分钟前
    建议去问问 data scientist...
    qianckjuan
        135
    qianckjuan  
       14 小时 26 分钟前
    我更想问问 op 写过什么语言,不是把堆栈错误信息打一坨出来的
    LanhuaMa
        136
    LanhuaMa  
       14 小时 24 分钟前
    @crc8 #6 说 ssl 时间超时我就知道什么问题了。。作为中国程序员,基本素养都不过关,还怪 python ,你是高中没毕业吗?
    huage
        137
    huage  
       14 小时 22 分钟前
    我喜欢手写操作系统、手写编译器、手写浏览器,一切都是手写,目前的进度是等硬件准备好了,才能写

    还是就是我喜欢自己手搓 CPU 、内存和硬盘,主板也是,目前的进度是开始研究提炼单晶硅了
    GeekGao
        138
    GeekGao  
       14 小时 22 分钟前
    stupid kids: 为什么你们当年要用诺基亚而不是 iPhone
    GarliCC
        139
    GarliCC  
       14 小时 10 分钟前
    遂弃之,择 Ruby ,渡终身。🙏
    MasterCai
        140
    MasterCai  
       13 小时 58 分钟前
    pip install pretty_errors
    xgdgsc
        141
    xgdgsc  
       13 小时 50 分钟前 via Android
    库多而已,爱不起来又必须用的话就在你喜欢的语言里调,比如在 Julia 用 pythoncall.jl ,在 cpp 里用 pybind11 ,一般是个语言都可以调
    itskingname
        142
    itskingname  
       13 小时 48 分钟前
    Python 报的错误信息会比 Java 多? Java 的日志你翻页翻 3 屏幕都看不到真正错误的位置。
    ounxnpz
        143
    ounxnpz  
       13 小时 40 分钟前
    假设有一个 Map [{"name": "zhang3"},{"name": "li4"}],我们找下 li4 在不在 Map 里。

    python:
    print("li4" in [i["name"] for i in l])

    java:
    System.out.println(l.stream().map(map -> map.get("name")).collect(Collectors.toList()).contains("li4"));

    golang:
    for _, i := range list {
    if i["name"] == "li4" {
    fmt.Println(true)
    return
    }
    }
    fmt.Println(false)

    js:
    console.log(list.some(item => item.name === 'li4'))

    php
    foreach($array as $item) {
    if ($item["name"] === $name)
    echo true;

    }
    echo false;
    }
    ounxnpz
        144
    ounxnpz  
       13 小时 38 分钟前
    假设有一个 Map [{"name": "zhang3"},{"name": "li4"}],我们找下 li4 在不在 Map 里。

    python:
    print("li4" in [i["name"] for i in l])

    java:
    System.out.println(l.stream().map(map -> map.get("name")).collect(Collectors.toList()).contains("li4"));

    golang:
    for _, i := range list {
    if i["name"] == "li4" {
    fmt.Println(true)
    return
    }
    }
    fmt.Println(false)

    js:
    console.log(list.some(item => item.name === 'li4'))

    php
    foreach($array as $item) {
    if ($item["name"] === $name)
    echo true;
    return
    }
    echo false;
    }

    哪个最简单,更简洁,更接近自然语言。
    tunzao
        145
    tunzao  
       13 小时 21 分钟前
    写自动化小脚本是真的快
    DIO
        146
    DIO  
       12 小时 55 分钟前
    python 其实是调用入口,稍微核心一点的逻辑和实现都要去底层了。调库调参侠自然很喜欢。
    业务代码应该是没人主力用吧。。。

    工具只有适合不适合,没有喜好
    Leviathann
        147
    Leviathann  
       12 小时 54 分钟前
    @ounxnpz
    幽默
    我直接 map.containsValue() 你又如何应对
    edisonwong
        148
    edisonwong  
       12 小时 23 分钟前
    写脚本好使,大型项目不好使。我 js , swift ,golang ,python 基本都写过几万行公司生产环境代码, 最近换公司写了几千行 python 有感:

    1. django 不同版本兼容不好,网上教程有时候又过时用不了,当然你可以说看官网文档解决
    2. 还是 django ,报错跟实际问题天差地别,一个 from .xx import xxx 写得不对,django 居然给我报了个 api 重复注册的报错,我各个角落里试了 try catch 最后才发现 importError
    3. schama 约束+强弱类型混用,有点难受
    4. 环境问题,在一些老机器上,用 pymysql 之流的还需要系统层面安装底层库,要在一些 centos6 里,源都没了,装就更费劲了。当然你可以说用 docker 解决

    当然 java 也不怎么好,占资源,命名太长( doge )

    所以我能用 go+gin 写的就 go 写,go 写起来除了写可变结构体、复杂 json 结构的时候有点难受,别的还好。占资源好,编译随处执行,并发好写。
    edisonwong
        149
    edisonwong  
       12 小时 19 分钟前
    @edisonwong 补上
    前端 node ,版本管理不太好。稍微换一下 node 版本、组件升级之类了,很多都跑不了
    相比 go mod 管的就挺好,当然有一些异类的库,比如 etcd ,需要手动 gomod 里 replace ,据说是因为 etcd 作者反 go mod ( doge )
    ounxnpz
        150
    ounxnpz  
       12 小时 17 分钟前
    你针对的是这样的结构
    {
    "k": v
    }
    cold777SY
        151
    cold777SY  
       11 小时 18 分钟前
    @sgld 我也看高天, 确实说的对, 开源了不代表就得当用户的孙子
    qq78660651
        152
    qq78660651  
       11 小时 6 分钟前
    为什么那么多人用,因为库多,功能实现快;
    为什么库多,因为用的人多;
    Plumbiu
        153
    Plumbiu  
       10 小时 59 分钟前
    @edisonwong 这种大概率没锁依赖版本,前面全是^开头的
    Sawyerhou
        154
    Sawyerhou  
       9 小时 39 分钟前
    @Leviathann #147 比较代码量要在相同的算法逻辑下,

    总不能,题目:求 1-100 的和
    你:print(5050)
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.