推荐学习书目
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
typing
V2EX  ›  Python

关于学习 Python

  •  2
     
  •   typing · May 30, 2014 · 6748 views
    This topic created in 4395 days ago, the information mentioned may be changed or developed.
    我想在这里请求大伙帮助我决定一个系统学习Python的计划.

    其实说起来我用Python有一段时间了. 用过web.py写过网络应用, 用过Blender脚本系统写过自动化的几何处理程序, 用过Python做codeforces的题目.

    然而我终究觉得自己用Python停留在那种语法/库函数靠Google搜索的层级. 对于一个问题, 通常StackOverflow上第一篇命中的结果就被我用做解决方案了, 它们只是恰好能工作而已, 而并不知道这个解决方案的适用范围(比方说对于更为通用的问题之下有没有更好的方案), 其内在的机制(比方说对于执行效率的关注).

    对比C++, 我对每一行的语句的执行效率都大概有数, 甚至我都能想到这些语句生成的汇编码; 我对C++的语言设施也是较为熟练, 我可以针对要实现的逻辑确定基本正确的语言设施.
    然而对于Python, 我完全处于一种困惑的状态: 有那么多的语言设施, 不同的风格, 我到底该以什么样的标准去抉择?

    所以在这里, 我想请教万能的V2EX, 我想深度的学习Python, 换句话说, 我想学习idiomatic Python:
    我想能够根据自己将要实现的逻辑来决定使用什么样的语言特性, 而不是反过来: 学习了一堆语言特性, 然后再看它们可以用到何处;
    我想能够写出一手成熟的代码: 让其他Python程序员能够快捷的理解我的设计;
    我想去熟悉一个Python程序员所惯用的工作流, 比方说debugging, profiling, optimization(内存/效率上的), testing, documentation, 以及你们常用的工具.

    谢谢!
    Supplement 1  ·  Jun 27, 2014
    19 replies    2014-06-28 12:23:43 +08:00
    jprovim
        1
    jprovim  
       May 30, 2014   ❤️ 1
    這個...我來說兩句吧.

    1. 看書, 最簡單了, 也是基礎.
    2. 運氣好的話, 跟個大牛就解決了.
    3. 看開源的代碼, 比如說twisted, django之類的, 就是看看別人怎麼寫的. 別光看啊, 要理解爲什麼要這麼寫.

    當然了, 歸根到底就是python的B格比較高, '有且只有一種方法'. 如果別人寫的好, 你就改掉你的寫法. 什麼是寫的好? 能讀懂 -> 代碼精煉 -> 代碼短 -> 更pythonic.
    se77en
        2
    se77en  
       May 30, 2014   ❤️ 2
    推荐一本书 writing idiomatic python https://www.jeffknupp.com/writing-idiomatic-python-ebook/
    clino
        3
    clino  
       May 30, 2014   ❤️ 1
    "然而对于Python, 我完全处于一种困惑的状态: 有那么多的语言设施, 不同的风格, 我到底该以什么样的标准去抉择?"
    凭你的直觉先选一个,觉得有问题再调整
    因为别人的选择对你来说不一定合适,所以也不一定要因为别人的建议有太多犹豫
    mengzhuo
        4
    mengzhuo  
       May 30, 2014   ❤️ 1
    好久没有看到这么诚恳的帖子了,现在很多人就想花几天学个Python,就自称是个程序员,成为CEO,走上人生巅峰……
    你有这份耐心,就基本成功一半了。
    ---------------------------------------------------------
    我不是大牛
    profile,优化都需要数据结构的知识,
    了解Python的set list dict head效率和实现才能在具体应用中使用最好的数据结构
    多从标准库中学习他们的Python实现
    比如组合:
    https://docs.python.org/2/library/itertools.html#itertools.combinations

    语言特性的使用是看多别人代码才能知道的(看书也是看代码,所以不要在意细节啦),比如generator/yield的用法和lambda+map/reduce/filter/sorted/reversed的使用,LISP的特性╮(╯▽╰)╭

    debugging,testing是一门学问,具体看各大开源的项目里的testcase怎么写、debugging也可以看他们的issuse和fix。这里我要感谢一下大神 @pyKun 的带领和入门。

    还有很多事情是不遇到坑是不会知道的,比如实习生时,把2G的csv数据写到内存里的挫事我也干过……
    dbow
        5
    dbow  
       May 30, 2014   ❤️ 1
    既然懂C语言看Python源代码就好了,语言的feature, 效率一目了然,比如import os (LOAD_CONST -1, LOAD_CONST None, IMPORT_NAME->PyDict_GetItemString(f->fbuiltins, "__import__") -> PyEval_CallObject, STORE_NAME os -> PyDict_SetItem(f->f_locals, w, v)), 其它是编程技巧的事情。
    pyKun
        6
    pyKun  
       May 30, 2014   ❤️ 1
    @mengzhuo
    抬举我了,太不好意思了。。。。

    python比较亲民,楼主继续加油吧~
    rebornix
        7
    rebornix  
       May 30, 2014   ❤️ 1
    我觉得可能是我比较笨,C/C++/C#都能玩耍的很愉快,但是Python每次写都感觉怪怪的不得要领。
    lincanbin
        8
    lincanbin  
       May 30, 2014   ❤️ 1
    Python本来的设计,就是不需要你去搞懂这些。
    RIcter
        9
    RIcter  
       May 30, 2014 via iPad   ❤️ 1
    @se77en 好贵..实体书要220在亚马逊...
    lu18887
        10
    lu18887  
       May 30, 2014   ❤️ 1
    要让编程语言为你所用,而不是专门为了用语言的特性而用!在我看来,Python的开发效率大于执行效率的意义。Ruby Python这类快速开发的语言,在效率上是无法和native的C/C++等语言匹敌的,但是这两门语言的开发效率却远远大于C/C++的开发效率,你不需要 一堆的include 你不需要编写复杂的makefile,你也不用烦恼指针的magic,当C和C++的程序员在做这些的时候,你已经迅速的打出了一行Hello World。我没有嫌弃C/C++的意思,我自己也是用C的……
    tonghuashuai
        11
    tonghuashuai  
       May 30, 2014   ❤️ 1
    别光顾着看,从现在就开始动手写
    hslx111
        12
    hslx111  
       May 30, 2014   ❤️ 2
    我觉得Python目的就是要简单好用,至于性能问题,大部分用Python的情况对于性能其实要求不是很多,当你真的需要要求性能的时候,再看也来得及。
    当然多看看大牛的代码也是很好的学习,所以再次推荐一下我经常玩的网站http://www.checkio.org/,你可以自己写代码解决一个问题,提交之后就能看到其他人的代码,这样学起来印象比较深刻。
    datou552211
        13
    datou552211  
       Jun 27, 2014
    学习pythonic 的程序设计,多看好项目源码,最主要的多敲键盘,读万卷书不如行万里路。依赖google是正常行为。主要是兴趣使然,找到想做的东西,按项目流程走一边顶看几遍书
    hermitu
        14
    hermitu  
       Jun 27, 2014
    @se77en 这本书怎么样?你看过没有?适合刚入门的初学者吗?
    cbsw
        15
    cbsw  
       Jun 27, 2014
    对于想深入学习 python,我觉得可以找感兴趣的标准库,直接读源代码,既能知道那些库怎么更好的用,又能知道背后是如何实现的,还能学到 Python 的 coding style。如果想更加深入学习,比如怎么优化,我觉得可以直接看 python 的实现,不过我想绝大多数人可能不需要到这一级别,LZ应该也不属于那极少的一部分人,所以建议看看 python 标准库的实现。
    (PS:最近也准备深入学习 python,正在看标准库的源码,可以一起学习)
    frankzeng
        16
    frankzeng  
       Jun 27, 2014
    能够解决实际工作中的问题,让代码又有性能又易懂,其他都是次要的
    harryhao
        17
    harryhao  
       Jun 27, 2014
    请看 Python源码剖析
    heliar
        18
    heliar  
       Jun 27, 2014 via iPhone
    赞同楼上…
    Kabie
        19
    Kabie  
       Jun 28, 2014
    看自带的文档。。。就看标准库就行了…………另外记得看最新的3.x的……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3192 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 112ms · UTC 12:26 · PVG 20:26 · LAX 05:26 · JFK 08:26
    ♥ Do have faith in what you're doing.