整理了一本书《Python 代码、单元测试和项目规范》,供大家参考 - V2EX
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
unity0703
V2EX    Python

整理了一本书《Python 代码、单元测试和项目规范》,供大家参考

  •  
  •   unity0703
    ee0703 2015 年 12 月 5 日 7339 次点击
    这是一个创建于 3772 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于 python 项目,尤其是 web 项目,并没有一个比较完整(包含代码、测试、项目)的开源规范,于是我整理(chaoxi)了一本《 Python 代码、单元测试和项目规范》,以供大家参考,代码规范部分主要基于 PEP8

    目前书还没有写完,可能存在很多错误和不合理的地方,欢迎大家参与编辑和指正

    下载和预览(在线阅读、 pdf 、 epub 、 mobi ):
    https://www.gitbook.com/book/python-guide/python-style-guide/details

    项目地址(欢迎 PR 和 issu):
    https://github.com/ee0703/python-style-guide

    特别感谢 @sinux 提供第二章内容:单元测试规范

    23 条回复    2015-12-15 22:06:25 +08:00
    holyzhou
        1
    holyzhou  
       2015 年 12 月 5 日
    不错 对我这种新手很有帮助
    congeec
        2
    congeec  
       2015 年 12 月 5 日   1
    很好,不过不够详细。比如说程序设计规范里 filter 和 map 的例子就不合适,这种情况下用 listcomp 最好。当然,你要是在前面说明编程范式统一用函数式,这个例子还是不错的
    shyling
        3
    shyling  
       2015 年 12 月 5 日   1
    我觉得有些写法说它“错误”不太好吧。。。不推荐的写法感觉会好点
    xufang
        4
    xufang  
       2015 年 12 月 5 日
    打开扫了一篇,非常好。单元测试这一块说得不错,堪称亮点。

    希望能加入更多内容。好顶赞。
    unity0703
        5
    unity0703  
    OP
       2015 年 12 月 5 日
    @shyling 嗯,多谢指正,用 '不推荐的写法' 比较好
    unity0703
        6
    unity0703  
    OP
       2015 年 12 月 5 日
    @congeec 多谢指正,这里确实列表生成式好一点,性能上会快很多
    XianZaiZhuCe
        7
    XianZaiZhuCe  
       2015 年 12 月 5 日 via Android
    求 php 版本(逃
    neoblackcap
        8
    neoblackcap  
       2015 年 12 月 5 日   1
    @unity0703 filter 函数在 Python 3 与生成器表达式是一个样,所以我觉得首要说明用什么版本的 Python

    其二,正则表达式那边,我觉得尽可能不如说, 2 次以上的调用则要编译,否则就可以略去编译。
    mahone3297
        9
    mahone3297  
       2015 年 12 月 5 日   1
    @XianZaiZhuCe 最近不是有本 moder php 么
    还要 php the right way
    bytenoob
        10
    bytenoob  
       2015 年 12 月 5 日
    很好,收藏了,感谢楼主
    KyleMeow
        11
    KyleMeow  
       2015 年 12 月 5 日
    GitBook PDF 的中文字体太奇怪了吧,楷体宋体混合,大小不一
    unity0703
        12
    unity0703  
    OP
       2015 年 12 月 5 日 via Android
    @KyleMeow 这个好像是 gitbook 的问题,我找找看有没有解决办法
    deepurple
        13
    deepurple  
       2015 年 12 月 5 日   1
    @KyleMeow GitBook 的中文字体一贯就是那个丑陋的样子
    staticor
        14
    staticor  
       2015 年 12 月 5 日
    收藏+感谢. 恰好响应了我前阵子对测试, UNITTEST, 甚至是 TTD 开发流程上的一些困惑.
    unity0703
        15
    unity0703  
    OP
       2015 年 12 月 5 日
    @neoblackcap 多谢指正
    KyleMeow
        16
    KyleMeow  
       2015 年 12 月 5 日 via iPhone
    @deepurple 嗯,其他教程的也是,只能下 EPUB 和 MOBI 后转为 PDF 。强迫症实在忍不了默认 PDF 的字体。
    dydhyh
        17
    dydhyh  
       2015 年 12 月 6 日
    mark , 好评啊, 新手表示很通俗易懂, 给楼主赞一个
    guyskk
        18
    guyskk  
       2015 年 12 月 6 日   1
    模块命名我不赞同
    ```
    # 正确的模块名
    import decoder
    import htmlParser

    # 错误的模块名
    import Decoder
    import html_parser
    ```
    我认为
    htmlparser > html_parser > htmlParser
    模块名不应该用大写字母
    https://pythonhosted.org/six/#module-six.moves
    unity0703
        19
    unity0703  
    OP
       2015 年 12 月 6 日
    @guyskk 多谢指正,只有一个单词时一般采用全小写这点没有问题

    关键就在于多个单词的时候,这个标准并不统一,比如 python2 中既有 SimpleHTTPServer, StingIO ,又有 argparse,unittest ,而 google 代码规范中的建议是 lower_with_underline ( Python 之父 guido 也建议这种方式)

    就可读性来讲,首字母小写的驼峰命名会好一点,这也是大部分 java 规范采用的命名方法,其次是 lower_with_underline ,全小写的话可读性可能不是那么好,比如说 simplefilecache, commoninterpretergenerator, 你感受一下,改成 simpleFileCache, common_interpreter_generator 会好很多

    综上,个人认为,首字母小写的驼峰命名,或者 lower_with_underline 会好很多
    guyskk
        20
    guyskk  
       2015 年 12 月 6 日
    python2 中的命名比较混乱, python3 就好多了
    commoninterpretergenerator 这样肯定很难看的,用 common_interpreter_generator 更好一点,
    python3 标准库中的名字比较长的模块也是用下划线命名,比如 zip_longest 而不是 zipLongest 。
    但是这么长的模块名也是不好的,比如 web_server_gateway_interface 可以缩写为 wsgi , common_interpreter_generator 也可以缩写为 cig 。
    enlau0912
        21
    enlau0912  
       2015 年 12 月 7 日
    最近 C python ,本很有助,感。
    hjkl0001
        22
    hjkl0001  
       2015 年 12 月 7 日
    收藏了,谢谢!!!
    mingyun
        23
    mingyun  
       2015 年 12 月 15 日
    mark
    关于     帮助文档     自助推广系统     博客     AI     FAQ     Solana     2564 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 09:56 PVG 17:56 LAX 02:56 JFK 05:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86