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

怎么样才算成为这样的 Python 专家呢?

  •  
  •   levelworm · 2024-07-31 23:22:26 +08:00 · 4228 次点击
    这是一个创建于 400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 HN 上看到的说法,是要能够改 Cpython 代码来做一些事情,才算是真正的 Python 专家。但是 Python 一般大家都是用来写脚本语言的,什么工作需要改动解释器/编译器的代码呢?

    26 条回复    2024-08-22 15:06:21 +08:00
    R4rvZ6agNVWr56V0
        1
    R4rvZ6agNVWr56V0  
       2024-07-31 23:34:28 +08:00   ❤️ 1
    安全相关,例如软件加固
    商业编译器相关,例如商业化的开发者工具

    btw ,修改 cpython 代码并不是一件多么伟大的事情,除非能贡献出有价值的 PEP 的 Patch
    crackidz
        2
    crackidz  
       2024-07-31 23:42:52 +08:00   ❤️ 1
    mumbler
        3
    mumbler  
       2024-07-31 23:48:28 +08:00   ❤️ 1
    作品说话,被人用得越多,越厉害
    matrix1010
        4
    matrix1010  
       2024-07-31 23:55:43 +08:00 via iPhone   ❤️ 1
    所谓专家在任何领域都差不多,最顶尖的是能作出有重大影响的开创性成果,普通专家则是解决问题能力极强。套用到 Python 上,Python 作为一种编程语言,开创性成果也许是 jit 或者解决 gil 之类的。解决问题就见仁见智了,如果你在公司能解决所有 Python 问题,那你就是公司的 Python 专家
    drwebco
        5
    drwebco  
       2024-07-31 23:59:39 +08:00   ❤️ 1
    "专家"就是写的代码能解决问题,那必然是能解决足够多的"问题"。不用纠结如何实现,而是问题解决得足够好
    levelworm
        6
    levelworm  
    OP
       2024-08-01 00:02:12 +08:00
    @GeekGao 多谢。看来还是自己做的事情太简单了。我现在是 DE ,顺便做一点 Data Platform 的工具脚本,感觉还是过于基础。
    levelworm
        7
    levelworm  
    OP
       2024-08-01 00:09:05 +08:00
    @crackidz 多谢,自己还是太逊了。
    levelworm
        8
    levelworm  
    OP
       2024-08-01 00:09:49 +08:00
    @mumbler 多谢,看来这指的是做开源项目了,不过也需要在业界深耕,否则也并不知道有啥需求。总而言之,自己现在在做的事情太简单了。。。
    levelworm
        9
    levelworm  
    OP
       2024-08-01 00:36:03 +08:00
    @matrix1010 有道理,感觉我们公司似乎也不需要这样的人才。。。的确是需要用 Python 写数据平台的脚本,但是对于 Python 本身似乎没有什么需求。
    levelworm
        10
    levelworm  
    OP
       2024-08-01 00:47:39 +08:00
    @drwebco 多谢,看了大家的发言,更加坚定了继续折腾、换公司的想法了,就是这精力真的跟不上了。。。
    salmon5
        11
    salmon5  
       2024-08-01 09:11:50 +08:00
    Python 有 有专家?
    InkStone
        12
    InkStone  
       2024-08-01 09:36:37 +08:00
    如果你的 Python 脚本都是纯本地的,不需要到处迁移也不需要发布给别人用,改一下 Python 的代码加些自己喜欢的语法糖,可以带来比较舒适的开发体验。

    七八年前做过这样的事情。不过说实话没什么价值,后来也懒得弄了。
    SWALLOWW
        13
    SWALLOWW  
       2024-08-01 10:00:15 +08:00
    你再加一个 gpt 就是专家
    byweilong
        14
    byweilong  
       2024-08-01 10:14:16 +08:00
    b 站有个 up 《码农高天》 我觉得算是专家
    NessajCN
        15
    NessajCN  
       2024-08-01 10:39:27 +08:00   ❤️ 1
    编程语言就是个工具,成为工具专家有什么用,你要成为解决某个问题的专家
    你听说过谁是锯子专家,剪刀专家,缝纫机专家吗。当然是成为专业木工,专业园丁,专业裁缝呀
    木工会用锯子用特别熟练,当然也会用刨床。最主要的是他对木头的了解和熟练。而不是说他锯子用多么好
    同样的,你要成为机器学习专家,爬虫专家,运维专家,而不是什么 Python 专家
    iorilu
        16
    iorilu  
       2024-08-01 10:43:52 +08:00
    你看看 pycon 就知道阿

    每年那么多人演讲呢, 都是各领域的 python 专家, 你看看他们研究的东西和水平不就知道了
    deplives
        17
    deplives  
       2024-08-01 11:38:16 +08:00
    修改 cpython 代码不是一件很容易的事情?这个东西你要真的能实现一个 PEP 或者对某些 PEP 做出核心贡献 啥时候能成为 core dev 才算专家吧
    deplives
        18
    deplives  
       2024-08-01 11:41:44 +08:00
    要是 [是要能够改 Cpython 代码来做一些事情,才算是真正的 Python 专家]
    那我觉得我也算,比如我实现修改 cpython 源码给内置对象增加 deepcopy 方法
    抛弃了
    ```python
    from copy import deepcopy
    d = {'a':[1,2,3]}
    dd = deepcopy(d)
    ```
    改成了
    ```python
    d = {'a':[1,2,3]}
    dd = d.deepcopy()
    ```
    看起来就很不错
    echoless
        19
    echoless  
       2024-08-01 14:13:46 +08:00   ❤️ 1
    读完 fluent python 基本就够了。
    noogler67
        20
    noogler67  
       2024-08-01 16:30:49 +08:00   ❤️ 1
    我们做 py2 到 py3 转换的时候,理解 python 内部做了什么的时候会看 cpython 代码。但不需要修改。修改是不是得跟社区扯皮,修复 bug 或者提交 feature 。
    lpbname777
        21
    lpbname777  
       2024-08-01 17:08:31 +08:00   ❤️ 1
    @byweilong 我也看过他,觉得挺厉害,然而主业并不是 python
    naythefirst01
        22
    naythefirst01  
       2024-08-01 17:43:07 +08:00   ❤️ 1
    保护代码的时候经常要使用自定义的解释器
    gaogaotiantian
        23
    gaogaotiantian  
       2024-08-02 03:11:01 +08:00   ❤️ 6
    我好像完成了楼里提出的所有条件
    * 修改 CPython 代码
    * 贡献 PEP
    * 成为 core dev
    * 在 pycon 上做 talk

    如果你想尝试给 CPython 贡献点代码,其实没有那么难,可以参考一下我当时第一个 PR 的视频( https://www.bilibili.com/video/BV1Ck4y1h7Hm/),你应该可以发现,这个 bug ,其实很多人都可以解决,它不是一个非常深奥的事情。

    相对来说,成为 CPython 团队成员难度更大的应该是持之以恒的动力。改第一个 bug 的时候你可能很亢奋,到第二个,第三个,第四个的时候,就没那么激动了。而且你很快就会意识到,你非常兴奋地完成的修改,可能没有人 review ,甚至有 core dev 告诉你你这个方向不对,直接 close 掉。你会有不少精力花在沟通上,也会有一些努力付诸东流。然而这是成为一个大型项目贡献者必然要经历的过程,也是学习的过程(比如你做的这个东西,为什么它不适合 CPython )。

    说回你的问题,我觉得“专家”这个词,它本身是带有主观色彩的,每个人的观点都不一样。比如这 20 层楼里出现的几个条件的交集,全中国只能交出我一个人来。但是你能说全中国就我一个 Python 专家么?

    甚至,你能说我是 Python 专家么?

    我基本不说我是 Python 专家,就是略懂。因为 CPython 发展到现在,已经是一个比较大的项目了,几乎没有人可以对所有的领域都了解的足够透彻。我自己敢说我是“专家”的领域,只有 pdb 和 tracing 的部分。其他的地方很多我也是遇到问题现学,甚至是没能力解决。

    所以我觉得,没必要纠结“专家”这个名头,是不是“专家”没那么重要,关键是你的 Python 能力能不能解决你的实际需求。你如果是要处理一些数据,就去了解数据怎么处理,不需要知道 CPython 内部是如何工作的。如果你要写个网站,就去写网站,不需要知道 copy-and-paste JIT 的原理是什么。

    如果你和我一样是一个爱慕虚荣的人,那就花点时间和精力,去混个 core dev 的名头,偶尔还能和小伙伴显摆一下,也不错:)
    levelworm
        24
    levelworm  
    OP
       2024-08-02 06:37:34 +08:00 via Android
    @gaogaotiantian 多谢大佬指点。
    echoless
        25
    echoless  
       2024-08-02 09:16:28 +08:00
    @lpbname777 #21 用 python 和 修改 cpython 源码本来就是两个事情. 由于工作的内卷导致面试 python 的时候, 会问 cpython 的问题.
    Leonooo13
        26
    Leonooo13  
       2024-08-22 15:06:21 +08:00
    @gaogaotiantian 天哥?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:31 · PVG 23:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.