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 · 143 天前 · 3733 次点击
    这是一个创建于 143 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    每年那么多人演讲呢, 都是各领域的 python 专家, 你看看他们研究的东西和水平不就知道了
    deplives
        17
    deplives  
       143 天前
    修改 cpython 代码不是一件很容易的事情?这个东西你要真的能实现一个 PEP 或者对某些 PEP 做出核心贡献 啥时候能成为 core dev 才算专家吧
    deplives
        18
    deplives  
       143 天前
    要是 [是要能够改 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  
       142 天前   ❤️ 1
    读完 fluent python 基本就够了。
    noogler67
        20
    noogler67  
       142 天前   ❤️ 1
    我们做 py2 到 py3 转换的时候,理解 python 内部做了什么的时候会看 cpython 代码。但不需要修改。修改是不是得跟社区扯皮,修复 bug 或者提交 feature 。
    lpbname777
        21
    lpbname777  
       142 天前   ❤️ 1
    @byweilong 我也看过他,觉得挺厉害,然而主业并不是 python
    naythefirst01
        22
    naythefirst01  
       142 天前   ❤️ 1
    保护代码的时候经常要使用自定义的解释器
    gaogaotiantian
        23
    gaogaotiantian  
       142 天前   ❤️ 5
    我好像完成了楼里提出的所有条件
    * 修改 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
       142 天前 via Android
    @gaogaotiantian 多谢大佬指点。
    echoless
        25
    echoless  
       142 天前
    @lpbname777 #21 用 python 和 修改 cpython 源码本来就是两个事情. 由于工作的内卷导致面试 python 的时候, 会问 cpython 的问题.
    Leonooo13
        26
    Leonooo13  
       121 天前
    @gaogaotiantian 天哥?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2474 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:29 · PVG 13:29 · LAX 21:29 · JFK 00:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.