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

《编写高质量代码:改善 Python 程序的 91 个建议》

  •  
  •   hustlzp ·
    hustlzp · 2014-07-11 21:28:29 +08:00 · 7902 次点击
    这是一个创建于 3583 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2014-07-11 23:38:44 +08:00
    第1章 引论 1
    建议1:理解Pythonic概念 1
    建议2:编写Pythonic代码 5
    建议3:理解Python与C语言的不同之处 8
    建议4:在代码中适当添加注释 10
    建议5:通过适当添加空行使代码布局更为优雅、合理 12
    建议6:编写函数的4个原则 15
    建议7:将常量集中到一个文件 18

    第2章 编程惯用法 20
    建议8:利用assert语句来发现问题 20
    建议9:数据交换值的时候不推荐使用中间变量 22
    建议10:充分利用Lazy evaluation的特性 24
    建议11:理解枚举替代实现的缺陷 25
    建议12:不推荐使用type来进行类型检查 27
    建议13:尽量转换为浮点类型后再做除法 29
    建议14:警惕eval()的安全漏洞 31
    建议15:使用enumerate()获取序列迭代的索引和值 33
    建议16:分清==与is的适用场景 35
    建议17:考虑兼容性,尽可能使用Unicode 37
    建议18:构建合理的包层次来管理module 42

    第3章 基础语法 45
    建议19:有节制地使用from...import语句 45
    建议20:优先使用absolute import来导入模块 48
    建议21:i+=1不等于++i 50
    建议22:使用with自动关闭资源 50
    建议23:使用else子句简化循环(异常处理) 53
    建议24:遵循异常处理的几点基本原则 55
    建议25:避免finally中可能发生的陷阱 59
    建议26:深入理解None,正确判断对象是否为空 60
    建议27:连接字符串应优先使用join而不是+ 62
    建议28:格式化字符串时尽量使用.format方式而不是% 64
    建议29:区别对待可变对象和不可变对象 68
    建议30:[]、()和{}:一致的容器初始化形式 71
    建议31:记住函数传参既不是传值也不是传引用 73
    建议32:警惕默认参数潜在的问题 77
    建议33:慎用变长参数 78
    建议34:深入理解str()和repr()的区别 80
    建议35:分清staticmethod和classmethod的适用场景 82

    第4章 库 86
    建议36:掌握字符串的基本用法 86
    建议37:按需选择sort()或者sorted() 89
    建议38:使用copy模块深拷贝对象 92
    建议39:使用Counter进行计数统计 95
    建议40:深入掌握ConfigParser 97
    建议41:使用argparse处理命令行参数 99
    建议42:使用pandas处理大型CSV文件 103
    建议43:一般情况使用ElementTree解析XML 107
    建议44:理解模块pickle优劣 111
    建议45:序列化的另一个不错的选择——JSON 113
    建议46:使用traceback获取栈信息 116
    建议47:使用logging记录日志信息 119
    建议48:使用threading模块编写多线程程序 122
    建议49:使用Queue使多线程编程更安全 125

    第5章 设计模式 129
    建议50:利用模块实现单例模式 129
    建议51:用mixin模式让程序更加灵活 132
    建议52:用发布订阅模式实现松耦合 134
    建议53:用状态模式美化代码 137

    第6章 内部机制 141
    建议54:理解built-in objects 141
    建议55:__init__()不是构造方法 143
    建议56:理解名字查找机制 147
    建议57:为什么需要self参数 151
    建议58:理解MRO与多继承 154
    建议59:理解描述符机制 157
    建议60:区别__getattr__()和__getattribute__()方法 160
    建议61:使用更为安全的property 164
    建议62:掌握metaclass 169
    建议63:熟悉Python对象协议 176
    建议64:利用操作符重载实现中缀语法 179
    建议65:熟悉 Python 的迭代器协议 181
    建议66:熟悉 Python 的生成器 185
    建议67:基于生成器的协程及greenlet 188
    建议68:理解GIL的局限性 192
    建议69:对象的管理与垃圾回收 194

    (字数过长,第7,8章不贴了...)
    24 条回复    2014-07-13 08:14:27 +08:00
    virusdefender
        1
    virusdefender  
       2014-07-11 21:51:13 +08:00   ❤️ 1
    刚在当当上买了一本,47块钱,略坑。还好客户端首单返15。
    arcas
        2
    arcas  
       2014-07-11 22:05:08 +08:00   ❤️ 1
    有amazon电子书。。
    hustlzp
        3
    hustlzp  
    OP
       2014-07-11 22:08:32 +08:00
    @arcas 对哈,我还没注意...
    whtsky
        4
    whtsky  
       2014-07-11 22:09:18 +08:00 via iPad   ❤️ 1
    买了 Kindle 版,感觉排版略渣…
    wenbinwu
        5
    wenbinwu  
       2014-07-11 22:21:29 +08:00   ❤️ 1
    去四处看了下评论,没买
    ggarlic
        6
    ggarlic  
       2014-07-11 23:30:02 +08:00   ❤️ 1
    基本就是大杂烩,代码排版及typo错误很多,不推荐购买
    jprovim
        7
    jprovim  
       2014-07-11 23:35:42 +08:00
    @whtsky 麻煩給個目錄, 謝謝.
    hustlzp
        8
    hustlzp  
    OP
       2014-07-11 23:36:13 +08:00
    @jprovim 原来是这样,感谢提醒!
    hustlzp
        9
    hustlzp  
    OP
       2014-07-11 23:37:21 +08:00
    @jprovim 抱歉,回错人了...
    目录在附言中。
    jprovim
        10
    jprovim  
       2014-07-11 23:37:44 +08:00   ❤️ 1
    zjj
        11
    zjj  
       2014-07-12 00:19:32 +08:00
    邮件给我推送了
    jjx
        12
    jjx  
       2014-07-12 02:42:35 +08:00
    我看了觉的还行,定位中级层度, 一般看了都会多少有点收货, 表达的也算直白
    vob636
        13
    vob636  
       2014-07-12 08:12:32 +08:00
    已经看完……就不好意思吐槽了……真心太差了,错别字简直哎,代码里面的错误多不胜数……是请不起校验的人吗?感觉最不值的一本书了,而且每个里面讲解非常浅……最多值20元
    vob636
        14
    vob636  
       2014-07-12 08:19:57 +08:00
    @jjx ……真假的,中级……初级还差不多,用过python超过一年的人,他说的这些知识都知道,而且比他说的了解的还要深入好多。
    vob636
        15
    vob636  
       2014-07-12 08:21:02 +08:00
    @virusdefender 确实很坑的一本书……哎,已经吃灰去了,再买国内的Python书,直接剁手!还是爽快的打印英文书去吧……
    skybr
        16
    skybr  
       2014-07-12 08:46:32 +08:00
    @virusdefender 当当客户端射门游戏有满10-10的券
    jjx
        17
    jjx  
       2014-07-12 08:46:38 +08:00
    @vob636

    这类书的特点其实就是把大家都知道到强调一下而已

    知道和把他写成书还是不同的, 我没有仔细看代码,你发现这么多错误不妨列一列
    jjx
        18
    jjx  
       2014-07-12 08:50:48 +08:00
    再补充一下,如果能掌握运用这书的建议python程序员, 然后以初级的身份入职,我觉的我是有多少要多少了
    vob636
        19
    vob636  
       2014-07-12 10:05:11 +08:00
    @jjx 简单说几个吧……
    6页最下面代码import urllib2gh_url=(这样也行?)
    13页,示例一,Break(谁家python关键字有大写开头的Break)
    31页,“那么你一定对eval()所有了解”(行不行啊???)最下面示例:print 'Your answer is', eval(user_func)要不要这样啊,你函数定义参数可是string ,
    33页,建议15里面的方法一:li=[0'a', 'b', 'c', 'd','e'](你能找个编译器让它过了??)
    34页,其中,sequence可以为序列那一段,“也可以为一个iterato”(请问,iterato是什么?多打一个r就能把印刷厂弄倒闭了?)
    算了……没啥好说的了,这才到第几个建议……15,还有很多,个人比较处女座,对于知识点的正确性要求很高,同样对于自己代码也是。
    vob636
        20
    vob636  
       2014-07-12 10:08:00 +08:00   ❤️ 1
    @jjx 这里面东西真的太浅了……当然您的意思可能是根据他列出来的知识点,自己可以拓展出来N多,当然我看的也很慢,一周才看完,自己也拓展了N多,然后也写了一个读书笔记,但是,真心觉得这本书里面有好多东西真是浅尝辄止了……自己蛮喜欢赖勇浩的,但是,总感觉是另一个作者借用人家名气而已……算了,反正就这样了,还是安心看原版英文书籍吧。
    jjx
        21
    jjx  
       2014-07-12 10:09:10 +08:00   ❤️ 1
    我觉的这更多的是出版社的责任,对内容没有多大影响, 你说的那些错误,对于一个已入门的都会选择性跳过的
    mulog
        22
    mulog  
       2014-07-12 23:07:18 +08:00   ❤️ 1
    看了一大半
    首先的确bug略多 特别是前半部分 不知道是作者还是编辑的责任
    其次难易问题 的确前面有些地方是浅了一些 不过到靠后的部分我感觉开始讲的比较精彩了 主要是「内部机制」这章(当然了可能是因为我太差菜。。)

    个人感觉 还是值得买来看看的
    jprovim
        23
    jprovim  
       2014-07-13 02:48:46 +08:00
    @jjx 內容沒影響? 反正編譯器過不了. "選擇性的跳過"不能成為不負責任的藉口.
    我覺得 @vob636 的精神值得讚揚, 只有這樣才能幫助他人進步.
    vob636
        24
    vob636  
       2014-07-13 08:14:27 +08:00
    @jprovim 算啦,你也看到jjx的回复了,前面意思说,说内容有错,他就说你说有错拿出来看看啊,然后都列出来了,他又说,不要在意这些细节……那我还怎么回复他……没意思啦不是。而且我是搞技术的,对于这种玩语言文字的人……哎。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   757 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:58 · PVG 04:58 · LAX 13:58 · JFK 16:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.