V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iorilu
V2EX  ›  程序员

时至今日, 还有多少程序员认为 Python 简单的

  •  
  •   iorilu · 113 天前 · 13339 次点击
    这是一个创建于 113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先, 我标题强调了程序员三个字, 是有原因的

    因为外面随便搜索下, 都是什么 python 简单, 1 小时上手等等文章, 视频数不胜数

    但我加上程序员, 是因为这里用户大多是程序员, 或起码知道点代码的人

    我希望评价的人多少用过 python , 至少写过几百行代码, 或跑过一些 python 项目等等, 总之就是至少有一定深度的实践

    反正就我本人而已, 我几年前将 python 定位为主要使用语言

    我的认知是, python 压根不简单, 甚至是难度相当不小, 原因为以下几点

    • python 仍然不断快速迭代, 语法不断变化, 你不学习, 可能看不懂半年后的代码
    • 一些所谓简单的语法, 后面其实包含的非常深奥的原理, 比如 generator, async 等等东西, 虽然不了解也能用, 但也就是能用一点点而已, 稍微高级点深入点用法, 你不了解原理还是不行, 或者别人代码看不懂
    • python 本身库就极为庞大, 绝大多数人可以说 90%模块都没用过
    • python 使用范围太广, 想多涉及点就要相当的经验, 比如 web, gui, 机器学习, 深度学习, nlp 等等, 每一块都有专属的知识点需要大量经验, 时间

    总之, 所谓简单只是指 python 可能用的代码行数少点, 但是你想写出所谓 pythonic 的代码, 需要花费大量的时间学习, 这点肯定是不简单的.

    123 条回复    2024-01-07 15:09:20 +08:00
    1  2  
    ShadowPower
        1
    ShadowPower  
       113 天前   ❤️ 16
    Python 的简单是指入门简单。能让新手很快地实现自己的想法,而且还能满足各种各样稀奇古怪的需求。
    给非程序员用再合适不过了。
    cnightmare
        2
    cnightmare  
       113 天前
    python 实现脚本简单,对比其他编译语言,库也是比较齐全,没啥毛病,但是大工程还是编译语言吧
    iOCZS
        3
    iOCZS  
       113 天前
    有的人拿到媒只能用来烧火,有的人还能合成其他材料,不同的人对同一个东西的处置能力有区别,需求也有区别。
    codersdp1
        4
    codersdp1  
       113 天前   ❤️ 48
    你要这么说的话,每个语言都不简单
    leonhao
        5
    leonhao  
       113 天前
    看了一个比较新的 Python 项目,各种 yield ,async ,直接看懵了
    PTLin
        6
    PTLin  
       113 天前
    想起来我有个搞少儿编程的朋友,教 python ,教了三年连 yield 都不知道更别说基于 yield generator 的 async 了。
    ospider
        7
    ospider  
       113 天前   ❤️ 1
    > python 仍然不断快速迭代, 语法不断变化, 你不学习, 可能看不懂半年后的代码

    扯,match 都发不多久?我既没写过,也没见别人写过

    > 一些所谓简单的语法, 后面其实包含的非常深奥的原理, 比如 generator, async 等等东西

    3.7 之前的 async 确实泄漏了太多底层的东西,现在还好。至于 generator ,别的语言也有 stream 啊,这是编程本身的复杂性,不是 Python 的。

    > python 本身库就极为庞大, 绝大多数人可以说 90%模块都没用过

    常用的模块本身就很少啊,用模块是为了解决问题,而不是知道了就一定要用

    > python 使用范围太广, 想多涉及点就要相当的经验, 比如 web, gui, 机器学习, 深度学习, nlp 等等, 每一块都有专属的知识点需要大量经验, 时间

    所以说不存在「 Python 程序员」这种伪概念,只有数据分析师、后端、数据科学家这些概念。反过来思考,这个恰恰是一个优点,假设一个后端,现在去研究 NLP ,至少不用先去熟悉 Python 语法。
    murmur
        8
    murmur  
       113 天前
    python 作为胶水粘 c++当然简单,cdll 一下就搞定了,不像 java 还得写 jni
    julyclyde
        9
    julyclyde  
       113 天前
    @leonhao yield 还行; async 我根本理解不了
    Worldispow
        10
    Worldispow  
       113 天前 via Android
    数据分析之类的小功能根本用不到你说的这些特性。
    很多需求 python 顺手百度一下,几行代码就搞定了,其他语言还在研究如何搭环境编译。
    mightybruce
        11
    mightybruce  
       113 天前
    python 本身优化就是挺垃圾的, 才会导致不同的写法性能差距比较大。

    真正研究 python 都是研究 python 源码 和 如何写出不错的代码,这个基本没有提,语法糖再多也不是原理。

    比如 python c 代码的 PyObject 数据结构,cython 以及 pypy
    shyangs
        12
    shyangs  
       113 天前   ❤️ 1
    JavaScript 最簡單, Win, Linux, Mac 都有瀏覽器. 不像 Python 要安裝.

    Python 從網頁 Copy-Paste, 排版還有可能亂掉, 要會 Python 才能修正縮進. JS 可以在完全不會的情況下複製貼上.
    hello2090
        13
    hello2090  
       113 天前 via iPhone
    你这么说的话,那个简单呢? C 简单,你能写出火星车控制程序吗? java 简单,你能写出 spring 吗
    BYDH
        14
    BYDH  
       113 天前
    大概是 2017 年左右,刚从学校学了点 C 基础,看培训班广告知道了 Python ,之后用写了一堆最长不过 300 行的垃圾脚本。然而 Python 用户的主体是业余人士,都不怎么懂,东拼西凑互相抄袭,哪怕只是对库的简单调用,也写得稀烂,我不是学计科的,网上又全是菜鸡互啄,出了问题都找不到人问,找不到提升的途径,于是在 2019 年转投 C#,并在随后的日子里顺利脱离了菜鸡序列。
    crossggc
        15
    crossggc  
       113 天前
    还没入门就已经放弃了
    yzbythesea
        16
    yzbythesea  
       113 天前
    毫无争议的简单
    monsterx2a
        17
    monsterx2a  
       113 天前 via Android
    你混淆了概念,不是别人说错了。

    低级需要是给机器看的,高级需要是给人看的,越高级的需要越抽象。人类的需要就是抽象的,并且非常抽象。

    例如一个小朋友学编程,对着计算机说,我想画一个蛇吞大象的图片。

    哪个需要需要实现这个功能代码最少,就最简单
    monsterx2a
        18
    monsterx2a  
       113 天前 via Android
    @monsterx2a #17 需要->语言
    sordidclown
        19
    sordidclown  
       113 天前   ❤️ 5
    “我没有发现任何一门语言能像 Python 这样,对初学者来说简单、对专业人士来说实用、对黑客来说令人振奋。”

    摘录来自
    流畅的 Python (第 2 版)
    yolee599
        20
    yolee599  
       113 天前 via Android
    用 python 不是给你研究底层的,不需要你了解什么底层原理,直接 import 包,写几句解决问题就行了,这还不简单啊
    diagnostics
        21
    diagnostics  
       113 天前   ❤️ 1
    和我对某个粉丝群体的认知几乎一样,极度喜欢寻求别人的认同感 & 认为自己与众不同。

    python 简单指的是入门简单,Google 搜:python is simple ,第一个就是 good for beginner ,quora 的回复也说的是入门简单。
    adoal
        22
    adoal  
       113 天前
    任何编程语言钻研到深处都不简单。但是有的编程语言可以让外行快速上手,有的则需要征服陡峭的学习曲线,只适合专业人士。
    nicegoing
        23
    nicegoing  
       113 天前 via iPhone   ❤️ 1
    《黑客与画家》说过,语言目的越简单越抽象越好,更快的实现业务和迭代。学技术目的是满足用户需要,让用户满意了才挣到钱。精彩的技术主要对程序员有利,是用户关心的吗?放下自己的架子,再好的技术没人用也是垃圾,没有意义。就像商人会卖用户喜欢的商品,而不是自己认为用户应该喜欢的,那样亏到姥姥家。
    0o0O0o0O0o
        24
    0o0O0o0O0o  
       113 天前
    > 将 python 定位为主要使用语言
    > 语法不断变化, 你不学习, 可能看不懂半年后的代码
    > 虽然不了解也能用, 但也就是能用一点点而已, 稍微高级点深入点用法, 你不了解原理还是不行, 或者别人代码看不懂

    好吧,对我来说 python 确实就是个 shebang ,能 import 就 import ,不能就算了,不会去想着读别人的高深代码。。。语法只会用最基础的一部分

    > python 本身库就极为庞大, 绝大多数人可以说 90%模块都没用过

    感觉 Python 库多到这个程度就是它简单的理由之一,干啥都可以 import

    > python 使用范围太广, 想多涉及点就要相当的经验, 比如 web, gui, 机器学习, 深度学习, nlp 等等, 每一块都有专属的知识点需要大量经验, 时间

    感觉有点牵强了。搞科研的也很多用 Python ,你总不能把他们的知识领域也算做 Python 的吧?
    CrazyRundong
        25
    CrazyRundong  
       113 天前
    复杂的是由 Python 描述和定义的系统其本质的原理,比如某个深度学习算法、某一类 LLM 训练/推理引擎的设计原则和取舍;即使是单纯从工程角度看,大部分系统中 heavylifting 的部分都交给 C++/CUDA/Triton 了。Python 本身作为一个语言是非常直接和简单的
    wonderfulcxm
        26
    wonderfulcxm  
       113 天前 via iPhone
    简单是比较出来的,op 可以推荐一个比 python 简单的语言吗?
    musi
        27
    musi  
       113 天前
    所有说简单的,特指入门简单
    类似 python 、js 这种属于入门简单的
    rust 这种属于难的我入门入了几次还没入门
    pppanda
        28
    pppanda  
       113 天前
    哪个卖课卖的多,哪个就相对简单
    yy77
        29
    yy77  
       113 天前
    python 简单是说它能够比较快地完成一些简单的功能,不强求在最开始就把学习曲线拉得非常陡峭。
    GeekGao
        30
    GeekGao  
       113 天前
    @wonderfulcxm 那要回到上古时代了,Basic 简单,哈哈
    ivvei
        31
    ivvei  
       113 天前   ❤️ 1
    "python 仍然不断快速迭代, 语法不断变化, 你不学习, 可能看不懂半年后的代码"

    新版本你可以不用的。Python 现在版本不兼容到需要每个项目都锁死一个版本了。


    “一些所谓简单的语法, 后面其实包含的非常深奥的原理, 比如 generator, async 等等东西, 虽然不了解也能用, 但也就是能用一点点而已, 稍微高级点深入点用法, 你不了解原理还是不行, 或者别人代码看不懂”

    我要研究原理,那还用 Python 干嘛?是它实现得特别好?


    “python 本身库就极为庞大, 绝大多数人可以说 90%模块都没用过”

    没用过的就是不需要的。需要的自然会用。


    “python 使用范围太广, 想多涉及点就要相当的经验, 比如 web, gui, 机器学习, 深度学习, nlp 等等, 每一块都有专属的知识点需要大量经验, 时间”

    这个和 python 无关。而且什么叫 python 使用范围太广?比谁广?某些领域 python 库多生态好不表示只能用 python ,只是更多的人会选择 python 图个方便。
    salmon5
        32
    salmon5  
       113 天前
    怎么滴,你自己写个 python 觉得很复杂?实际中复杂的不是代码本身,是人的协作和管理。
    chenzhongxiang
        33
    chenzhongxiang  
       113 天前
    一切都是相对而言。
    对新手:语法什么的确实很简单,不用理解太多的概念就能凭直觉写小东西了。对老手:轮子太多太爽,现在谁还自己造轮子啊,轮子多就是王道。
    superrichman
        34
    superrichman  
       113 天前
    Python 可以说是现代编程语言里最简单的
    mcfog
        35
    mcfog  
       113 天前 via Android
    跑步简单,你能百米七秒,马拉松三小时吗?
    这又和全民健身大家跑步有什么关系?

    看不懂别人的观点,人家用你那种高级复杂的 python 完成什么任务,就少晒你的优越感
    lvlongxiang199
        36
    lvlongxiang199  
       113 天前
    > 稍微高级点深入点用法, 你不了解原理还是不行, 或者别人代码看不懂
    prove it. 我用过 generator 及 async, 完全不了解实现, 但不妨碍我使用. 只需要看下 pep 了解提出这玩意的背景, 能解决的问题, 适用场景就可以, 我就能知道用这个能解决啥问题. 同样我不了解 golang 中协程的实现, 但并不妨碍我天天用, 天天看他们的代码

    > python 本身库就极为庞大, 绝大多数人可以说 90%模块都没用过
    这能说明什么问题. 应该是先有问题(在这种场景下, 我需要实现什么功能, 比如二分查找, 解析 md), 然后 Google 下有没有库来实现这东西


    > python 使用范围太广, 想多涉及点就要相当的经验, 比如 web, gui, 机器学习, 深度学习, nlp 等等, 每一块都有专属的知识点需要大量经验, 时间
    这个锅 python 不背. 语言只是用来解决我碰到的问题的. 即使不用 python 解决, 这些问题难度依然不会降低
    jjwjiang
        37
    jjwjiang  
       113 天前
    背景:
    C#是公认的简单的语言
    我只用 python 做过简单的调包、小工具

    事实:
    看了一下你说的 generator, async 这两个关键字,大概 2 分钟我就理解了,不理解难点在哪
    lazywen
        38
    lazywen  
       113 天前 via Android
    python 只能算是入门简单,写出高效率的代码不容易,说到底还是跟人的技术水平有关,举个例子最近 ai 火爆,很多公司把 ai 相关业务用 python 来做,朋友前段时间刚接手了一个项目,原公司里面没有 python 的,都是从 java 直接抓个人过来写 python ,加上业务逻辑一次返回 400ms 以上甚至五六百,朋友接手时也几乎没写过 python ,但他懂得如何减少计算如何使用空间换时间,不知道怎么写比较好或者不懂各种写法之间区别的时候就会来问我,最后他优化到了平均返回 120ms 以内,包含模型计算 60 ~ 80ms 左右
    kakki
        39
    kakki  
       113 天前
    按这种说法的话,没有一个语言是简单的。
    但是要讲入门的话,我初中的侄女学个 python 还是很轻松的。
    Dlin
        40
    Dlin  
       113 天前
    难的不是语言,难的是要学习了解各种库,和设计思想。
    SWALLOWW
        41
    SWALLOWW  
       113 天前
    别人怎么想跟你有啥关系
    mwuxlcanrh
        42
    mwuxlcanrh  
       113 天前
    语言根本不重要,重要的是 1 个语言有多少轮子可以用。
    wangkun025
        43
    wangkun025  
       113 天前
    汉语简单吗?你语文次次满分吗?
    iorilu
        44
    iorilu  
    OP
       113 天前
    我意思是这个简单, 必须加上限定词, 比如凑一个几十行的脚本, 或者所谓的入门(实际上, 我不知道什么叫入门, 我认为 python 想写好 300 行代码的程序都不容易, 肯定超过所谓的入门水平)

    实际上很多大牛写的库, 核心也就可能几百行代码
    di94sh
        45
    di94sh  
       113 天前   ❤️ 2
    我觉得 python 的 easy 不应该翻译为“简单”,应该翻译为方便实用、容易上手之类的解释。
    python is easy language.
    Python 是一种方便使用的语言.

    python 的方便体现在:
    1. 它是解释执行的,想验证一个东西可以随手打开一个 ipython 可以编码了运行了。每输入一行指令,就能得到结果。
    2. 初级使用无需关心繁杂的变量类型,随写随用
    3. 高阶使用提供较为强力的语法糖,提升表达能力,降低编码复杂度,提高可读性
    4. 应用广泛,类库丰富,各行各业都能使用 python 制作简单的业务原型,胶水届的头牌

    这是之前的方便,之后的方便还需要加上:
    ai 可以帮助我们编写 python 代码
    只要能读懂 python 代码就好了,本身 python 设计之初就是想做一个容易读懂的语言。
    iorilu
        46
    iorilu  
    OP
       113 天前
    @di94sh 是的, 我也赞同, 评价 python 可能更合适得是, 使用简单, 到处可用, 方式多样都行
    IdJoel
        47
    IdJoel  
       113 天前
    说实话,我感觉最简单的语言是 PHP ,就拿读写文件来说,php 就一个函数,http 请求也就一个函数
    mcfog
        48
    mcfog  
       113 天前
    @IdJoel 说个笑话:PHP 是世界上 hello world 程序最短的编程语言

    $ php hello.php
    Hello, World!
    $ cat hello.php
    Hello, World!
    chaleaochexist
        49
    chaleaochexist  
       113 天前
    python 你可以选择简单的写也可以选择复杂的写.

    就是因为 python 越来越复杂我现在几乎快要弃坑了.
    iorilu
        50
    iorilu  
    OP
       113 天前
    @chaleaochexist 确实有这种趋势, 比如现在使用类型定义的越来越流行, 这好像和 python 开始说的不用关心类型背道而驰了, 其实社区也有很多人觉得越来越复杂, 或者说越来越趋近那种严格类型语言了, 加上语法不断变化, 想跟上也不容易
    Northxw
        51
    Northxw  
       113 天前
    16 年就开始接触 Python ,17-18 年我在博客文章里面写 Python 专栏,每次都会在文章的最后总结一句话 "Python 入门简单,精学不易"。
    adian
        52
    adian  
       113 天前
    同意#45 说的方便实用,容易上手。

    说是“简单”,其实想卖课爆米

    如果只是调包,就算入门,那我不知道这有什么好学的

    真入门了? import 导入库的机制是怎样的?介绍一下?麻烦着呢
    Jackeriss
        53
    Jackeriss  
       113 天前
    @leonhao 和新旧没关系吧,yield ,async 在 python 里早就有了
    Jackeriss
        54
    Jackeriss  
       113 天前
    python 简单应该是指其语法更接近自然语言,然后就是“The Zen of Python”,在 python 交互模式下输入“import this”可以看到:
    ```
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    ```
    python 是非常强调简洁优雅的语言,自然使用起来没那么多弯弯绕绕的东西。
    akaHenry
        55
    akaHenry  
       113 天前
    Python 毫无疑问的简单.(如果 Python 都用不明白, 别的语言更别学了)

    Python 毫无疑问的简单.(如果 Python 都用不明白, 别的语言更别学了)

    Python 毫无疑问的简单.(如果 Python 都用不明白, 别的语言更别学了)


    从 Python2.5/2.7 开始用, 经历过 3.4, 3.5, 3.7, 截止当前使用的 3.10.

    Python 这些年除了 type hint, 新增的大都是不疼不痒的语法糖, 没啥值得讨论的.

    和 Go, Rust 比, 自然是不用说. (学点其他语言, 再聊复杂)

    横向和 JS/TS, Dart 比, 依然是简单.

    Python 中稍复杂&高级点的特性, 和其他语言比, 依然是简单+易懂的.

    抛开具体的业务特殊性, Python 几乎写不出让人看不懂的代码. (分清楚哪些是业务层面, 哪些是语言层面)

    (yield 生成器, async/await, 不值一提, 其他语言也都有. 多测试几个例子, 并不难理解)

    Python 的教程, 参考书, 和 10 年前比, 汗牛充栋, 更是有海量的开源项目(涵盖所有领域).

    至于 FFI, C binding, Rust Binding, JIT, 我寻思你也没提到, 这也不算 Python 的复杂(多数语言的标配)

    少发牢骚, 多写项目, 多看优秀代码. 或者多学几门语言.(触类旁通, 别坐井观天)
    error451
        56
    error451  
       113 天前
    @Northxw 任何编程语言最终你是学的是如何编程,也就是算法和数据结构。并不是说学完一个语言的语法就叫学完了。为什么总要把这两个混在一起呢? 单纯从语法和语言的使用来说,Python 就是相对比 Java ,Rust 简单。 不要掺乎其他的东西。
    iorilu
        57
    iorilu  
    OP
       113 天前   ❤️ 1
    @adian 是的, 就这个导入包, 其实可能出很多问题

    经常有人一跑代码, 发现找不到包, 想搞清楚不容易

    更别说现在, python 环境配置, 包管理也是很乱的, 很难理清楚

    python 很多问题就在于, 随便干任何事, 都有无数的选择, 但这往往不是好事, 因为一般人没能力了解很多细则, 也没办法评估那种好或不好, 所以 python 根本就没什么规范可言, 做一件事, 让 10 个程序员写代码, 可能用的库, 使用的方法, 框架完全不一样, 这也增大了学习难度
    justfindu
        58
    justfindu  
       113 天前
    有前端复杂吗?
    thinkershare
        59
    thinkershare  
       113 天前
    用起来简单的编程语言,语言背后的支撑都很复杂,难以被精通掌握。
    JavaScript/Python 就是典型的例子,C/Golang 旧恰好相反,用起来难受,学习起来简单,Rust/C++就比较诡异(既难用,又难学)
    chengxiao
        60
    chengxiao  
       113 天前
    python 主要是语法糖太多了
    然后小技巧很多,有些人喜欢这些小技巧和花活
    这就导致代码可读性很低 尤其是那种喜欢炫技还不写注释的

    反正写了 Golang 之后,就觉得 Go 的好处还是有的,大家写的都差不多,阅读他人代码的难度一下就降下来了.
    akaHenry
        61
    akaHenry  
       113 天前   ❤️ 1
    @iorilu

    这代年轻人, 连克服困难, debug 的能力 & 耐心都没有? 还学编程?



    > 经常有人一跑代码, 发现找不到包, 想搞清楚不容易

    1. pypi.org 找不到? github 找不到? Google 不会用? 直接搜报错, 找不到解答? 再不济, GPT 不会用?

    2. 包版本问题: 平台问题, 二进制包问题, os 问题, 这些. 其他语言一样不少. (抱怨啥?) nodejs 版本不同, 很多 js 包无法安装, 依赖版本互相冲突, 是家常便饭. (还是见识浅)


    > 更别说现在, python 环境配置, 包管理也是很乱的, 很难理清楚

    1. Python 环境管理: 可以使用 pyenv 解决 Python 版本管理. nodejs 同样有 nvm, fnm. dart 同样有 fvm.

    2. 包管理: 可以使用 poetry, 或者 pdm, 都可以. 对比: js 有 npm, yarn, pnpm, 哪个问题少?

    3. 这些包管理工具, 有什么难? cargo, go mod, npm, pub, poetry, pod, 用的多. 都一样.

    > python 很多问题就在于, 随便干任何事, 都有无数的选择,

    1. 选择多, 好过没选择. 比如 dart, 很多包都没有.

    2. 挑花眼? really? Google 搜任何包名 + alternative, 都可以找到包对比评分, 使用量, 热度. 再不济, 直接问 GPT, 不会? 是太懒了吧, 伸手党, 等投喂?



    > python 根本就没什么规范可言,

    1. 没有规范??? 还是你不知道?

    2. PEP8 让你吃了, black/isort 工具, 让你吃了? flake8 检查让你吃了? mypy 让你吃了?

    3. 热门项目: fastapi, flask, django 都算上, 哪个项目, 没有项目规范? 你读过源码吗? 看不见每个项目里的规范规则文件?



    -----------------


    年轻人, 学习态度相当不端正. 路走不远的.
    dif
        62
    dif  
       113 天前
    只能说学起来简单,做起项目来还是很头疼的。
    目前稍微大点的项目都不会考虑 python ,还得是 Java 。python 上个月写的代码,今天看起来已经很陌生了,scala 上周写的代码,今天看起来相当陌生了。Java ,如果不是大片的 lambda ,还是很容易理解的。
    shawnbluce
        63
    shawnbluce  
       113 天前
    一直都没有人说 Python 上限低吧,只能说它门槛低。比如你现在让一些纯零基础的人来分别学 C 、Java 、Python 、Go 然后作业是大一常见的「学生成绩管理系统」,那估计学 Python 的人作业都做完了旁边 C 和 Java 的还在研究语法呢

    (没有说其他语言不好的意思,只是佐证 Python 确实入门快而已)
    akaHenry
        64
    akaHenry  
       113 天前
    王婆卖瓜一波: (送给正在学 Python 的同学, 需要的拿走, 也可以翻我早些年 关于 Python 的 blog)


    https://github.com/hhstore/annotated-py-projects

    Python 热门项目的源码分析

    https://github.com/better-py/learn-py

    流行的 Python 包测试用例 & 调研


    https://github.com/better-mojo/mod

    使用 Python 给 Mojo 写的包管理工具(你不是在吐槽包管理工具, 自己写啊, 又不难), WIP.
    xz410236056
        65
    xz410236056  
       113 天前
    我就用 python 搞点需求还研究那些。。。对我来说,用 python 单纯是因为相关包多。
    pip install + import 就行了。
    adian
        66
    adian  
       113 天前
    @akaHenry 哈哈,到你这里 op 倒成了入门选手了,能看到 PEP 的,我感觉都算入门了,op 用 Python 好几年了,PEP 肯定看了。我觉得我们讨论的所谓入门选手,是很多人连 PEP 都没看就说 Python 简单的,亦或者摇唇鼓舌说 Python 简单然后卖课的。

    网络上讨论是容易产生这种小马过河问题,有人是松鼠,有人是小马,有人是骆驼,面对的是同一条河,现在松鼠和骆驼都说河水很浅,松鼠是没趟过河,听人家说河水浅就说河水浅,骆驼是趟过河所以才说河水浅,松鼠觉得自己是骆驼,骆驼觉得自己也是骆驼,像我们这种小马觉得河水真不浅,有些机制要想搞明白还是蛮费力的
    chaleaochexist
        67
    chaleaochexist  
       113 天前
    @iorilu 为了堵住某些强调 pyhton 没有静态检查/类型检查的人的嘴.
    把类型加上了, 但是变的超级复杂还不如直接用 golang.
    chaleaochexist
        68
    chaleaochexist  
       113 天前
    @iorilu 还有各种 PEP 烦死了.
    lzyliangzheyu
        69
    lzyliangzheyu  
       113 天前
    因为像我这种不靠 PY 吃饭的人根本不用学也能用起来,有了 GPT 以后连 API 都不用查了,对于我这种不靠 PY 吃饭的人来讲,上手这么友好,当然“简单”了,毕竟复杂功能我都用不到,顶多用来处理处理文本数据和写测试脚本。。。。。
    lambdaq
        70
    lambdaq  
       113 天前
    兄弟们,快来 python 里写汇编

    https://github.com/Maratyszcza/PeachPy
    suhaocong
        71
    suhaocong  
       113 天前
    用 Python 写的框架简单?看个人需求,面对市场还是面对项目要求
    jjx
        72
    jjx  
       113 天前
    python 的误解多的是

    典型的什么像动态火葬场, 做不了大项目, 没有类型定义, 写不出易于维护的程序 等等

    挣这个没有用啊, 写代码是靠自身修炼的
    xiangbohua
        73
    xiangbohua  
       113 天前
    我觉得都是一个级别,同属于高级语言,没有简不简单区别只有放不方便的区别,要比简单和困难,应该那高级语言和汇编语言比。
    chaleaochexist
        74
    chaleaochexist  
       113 天前   ❤️ 1
    @akaHenry #60
    这层的内容大部分都是和 js 生态做对比那当然一样的问题了.
    这俩语言都差不多一个尿性. 要不然也没 TS 啥事儿了.

    poetry 的问题还少吗? python 的规范太多, 很多工具/环境都没有按照 python 规范走. 但是 poetry 有遵循这些规范, 导致 poetry 安装第三方包报错.
    具体例子我记不得了.

    反正我现在已经用 virtualenv 和 requirements.txt 管理依赖了. 省心.

    再说 PEP8 和 black 等 formatter
    以及 flake8 等 linter
    如果每一个都要熟悉和配置是挺头疼的一件事.
    对比 golang 就轻松很多.
    对了, 现在又新出了一个 ruff, 把 black 和 flake8 都干掉了.

    每个人的精力是有限的, 我还是觉得程序员的主要职责是把代码敲好, 而不是一个搭(开发)环境高手.
    Yuanlaoer
        75
    Yuanlaoer  
       113 天前
    一种“语言”简单不简单,取决于要做什么事情,以及目标是什么。
    先定义清楚再讨论,才有意义。
    maybedk
        76
    maybedk  
       113 天前
    非程序员,主用 python 的人来回答,python 优点:门槛低、学习曲线平滑、库多。但是,只要是图灵完备的语言其实都一样。所谓的简单是指上手简单,比如和 java 对比,少了很多概念(接口、参数类型声明),拿自己的感受举例,后来去了解 java 时发现,java 在语法层面只是加了很多很多限定,这些限定 python 都没有,也许都是面向对象的原因,二者其实是非常像的,如果你从 java 入门,那 python 写起来实在是太简单了,比 js 的坑还少。然后底层性能上肯定是各有所长,这块没得说,作为程序员肯定是要根据具体情况选择技术栈的。最近又入门了 Golang,这语言居然不能直接声明对象,靠指针引用也是非常奇妙。
    zzhaolei
        77
    zzhaolei  
       113 天前
    python 学习起来确实简单,但是语法太复杂,有些库是研究人员写的(比如大模型相关的),根本就是一个人一个写法,太乱了。

    而且没有类型,各种乱穿,根本不知道传的什么,反正能跑就行了。
    churchill
        78
    churchill  
       113 天前
    sorted([i for i in arr if i["gender"] != 0], key=lambda x: x["age"], reverse=True)

    arr.filter(i => i.gender != 0)
    .sort((a, b) => a.age < b.age ? 1 : -1)

    python 的 lambda 就是个残废

    I hate python as much as I hate OT
    qinyj12
        79
    qinyj12  
       113 天前
    我算是个半吊子野生程序员,平时工作忙,有空时自己写点小脚本之类的,估计也就能比小白强一点点。我学习过 java 、c 、python ,也看过 ruby 的项目,只有 python 能学下来。库多、社区活跃、中文资料也多,没有哪个语言能比 python 更适合初学者入门的了。像我们这样的非专业同志,选择语言永远是把编码效率放在第一位,其他的什么执行速度、优雅不优雅之类的,根本就不再考虑范围内,我又不是写什么价值几十亿大项目,能用就行,快才是最重要的。我相信这也是 python 社区能够活跃至今的主要原因,他的受众范围要比其他语言大得多。
    BuffDog
        80
    BuffDog  
       113 天前
    执着于语言本身就能说明问题

    菜就多练
    akaHenry
        81
    akaHenry  
       113 天前
    @chaleaochexist


    > 大部分都是和 js 生态做对比

    - 显然不是. 只是列了 js/nodejs 的问题, dart, ruby, swift 同样也有大量类似问题. 懒得废话.


    > poetry 安装第三方包报错?

    - poetry 也好, pdm/rye 也好, pip 也好. 用啥都无所谓.
    - 具体例子拿出来, 再讨论. (大概率是使用姿势问题, 我没遇到过解决不了的)

    > virtualenv + requirements

    - 同上, 喜欢用啥都行. 熟悉啥用啥, 不重要.
    - PS: pyenv 会比 virtualenv 更简单/易用.

    > golang 就轻松?

    - 伪命题. 觉得 go 轻松, 只是用的太晚, 没经历过 go 早期 vendor 时代, glide, dep, 各种包工具混战. 那个阶段一样混乱.
    - dart, go 和 rust 这种后出现的语言, 官方内置 fmt 工具 + 强规范, 这很正常. 所有后出现的语言都是. (吸取其他语言历史教训, 但拿孙子和爷爷比, 说爷爷有历史局限性, 就很滑稽)
    - go 我也使用多年. 和 Python 比, 各有优劣.(如果只看到 go 的相对优点, 还要再多用用)


    > 每个人的精力是有限的, 我还是觉得程序员的主要职责是把代码敲好, 而不是一个搭(开发)环境高手.


    - 同意.
    - 学会用啥, 可以拒绝进步.
    - 官方用啥, 就用啥. 没毛病.
    - 进一步, 用热门项目现成的 docker 构建脚本, 基本无脑用.(说不会安装包, 更是无稽之谈)
    - vscode + dev container 插件 + docker, 基本摸平开发环境差异+问题. (统一环境) 还在聊包安装报错, 只是因为活在石器时代的开发模式下, 而已.
    - 同时, LZ 也没有表现出任何"把代码敲好"的特质, 满嘴跑火车, 不求甚解.(显然并不知道我所讲的很多内容)
    Masoud2023
        82
    Masoud2023  
       113 天前
    那你觉得什么简单?
    akaHenry
        83
    akaHenry  
       113 天前   ❤️ 1
    @adian

    不要觉得: 用好几年 Python, 就有啥. (水平停留在很低层次, 用再久, 也只是低水平重复)

    很多人, 工作 3-5 年, 就停止学习+进步了. (别笑, 我招聘+面试过无数老油条, 筛选过几千份简历, 见得多了...

    不持续学习(坐井观天, 闭门造车), 不只是跟不上时代, 还会自以为是, 固步自封.(信口开河)

    佛学上叫: 知识障.(懂一点, 又懂得不多)
    lululau
        84
    lululau  
       113 天前   ❤️ 1
    Python 确实简单,不光入门简单,学到哪个阶段,相对其他很多语言来说,都是简单的

    你要是说,机器学习都是用 Python 的,学习机器学习难,所以学习 Python 难,那我就只能无语了。。。
    Zchary
        85
    Zchary  
       113 天前
    > 有前端复杂吗?
    > 那你觉得什么简单?
    > 菜就多练

    这都什么卧龙凤雏, V2 现在情绪化观点太多了, 早已变质
    baozijun
        86
    baozijun  
       113 天前
    改成 swift 更好,Python 平衡性很棒了
    silentsky
        87
    silentsky  
       113 天前
    之所以觉得简单是因为有很多现成的库可以调用 如果自己写那些库的话那还真不简单
    silentsky
        88
    silentsky  
       113 天前
    作为胶水语言是名副其实 可以轻易跟其他组件进行连接 写一些小的功能很方便 大项目就不适合了
    yx1989
        89
    yx1989  
       113 天前
    学习 Python 开发一共需要 3 天:其中 2 天半配环境,另外半天学一下。(手动狗头)
    z1829909
        90
    z1829909  
       113 天前
    再加一个 部署和维护成本高, 读代码心智负担高
    D33109
        91
    D33109  
       113 天前
    入门简单不代表这个东西完全不复杂吧,PY 本质上就是积木语言,给需要涉及到编程的非计算机专业人士用用确实简单啊,几天就能勉强入门
    99185302
        92
    99185302  
       113 天前
    简不简单不知道,方便倒是真的,像我们这种做科学数据统计的,要用到 numpy 和 matplotlib 这些库的。我把 2000 多行的 python 代码拿去给 C++同事让他们用 C++实现同样的效果,毕竟 C++快嘛,结果人家直接叫我滚了。
    akaHenry
        93
    akaHenry  
       113 天前
    @99185302 当然要你滚了.

    你的 2000 行 Python 部分, 不难. 你只是调包师(调 API 轻松, 难的让别人做完了)😅

    用到的 numpy 和 matplotlib, 让 C++ 开发 徒手撸, 要吐血+猴年马月.

    (虽然这些库底层也是 C/C++ 写的)

    但显然你的同事, 不具备写这些库的能力, 当然, 大多数开发也都没这个能力和时间.

    Python 对大多数人的简单易用, 是屏蔽了细节+复杂.
    inhzus
        94
    inhzus  
       113 天前
    简单是相对的。就目前 python 流行的使用领域,它就几乎是最简单的语言毫无疑问
    unco020511
        95
    unco020511  
       113 天前
    相对还是简单的,你去看看 java
    99185302
        96
    99185302  
       113 天前
    @akaHenry 所以很多时候不是简不简单的问题,而是没事自己造什么轮子呢?该用 C++的时候用 C++,Python 能解决的坚决不用 C++,又不是搞艺术,只是解决问题而已。
    haichao0808
        97
    haichao0808  
       113 天前
    @cnightmare python 新版本也在考虑去掉 GIL 锁的问题了,目前最新的 3.12 版本已经可以每个进程使用独立的 GIL 锁了
    forgottenPerson
        98
    forgottenPerson  
       113 天前 via Android
    对于很多人说个简单,旁人听了感觉啥都会,特别简单,,真正做相关东西有需要积累,又不会了。大多数都是在理论上说的头头是道,真正搞得有模有样像那么回事又少。
    whileFalse
        99
    whileFalse  
       113 天前 via Android
    python 简单,是指开发规模有限的情况下(不太需要多人协作以及长期迭代),选用 python 实现功能比使用其他语言实现同样的功能通常更容易

    而不是指让你觉得容易。
    hu8245
        100
    hu8245  
       113 天前
    我作为一个 cpp 开发者,从 python 上学到了很多语言思想,确实 python 在这方面很不戳
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1321 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:38 · PVG 01:38 · LAX 10:38 · JFK 13:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.