编写高质量Python程序的91个建议(转)

建议1:理解Pythonic概念

Pythonic可以定义为:充分体现Python自身特色的代码风格。
推荐阅读:PEP 8 – Style Guide for Python Code

建议2:编写Pythonic代码

  1. 避免只用大小写来区分不同的对象。
  2. 避免使用容易引起混淆的名称如字母’O’的大小写和字母’L’的小写‘l’。
  3. 不要害怕过长的变量名,变量名易于理解最重要。

建议3:理解Python与C语言的不同之处

  1. “缩进"与”{ }"
    C、C++、Java等语言使用花括号{}来分隔代码,Python则采用严格的缩进方式(4 spaces 或者 1 tab)注意空格和tab不能混用。
  2. 单引号(’)和双引号(")
    C中单引号代表字符,双引号表示字符串,而在Python中,单双引号无明显区别。
  3. 三元操作符(?:)
    三元操作符为if…else的简写方法,语法形式为C?X:Y,表示当C为True取X,反之取Y。在Python中没有三元操作符,但有等价的形式:X if C else Y。
  4. switch… case
    Python中没有像C语言那样的条件分支语句,但是可以使用if…elif语句来实现同样的功能。
    建议4:在代码中适当添加注释

Python中有三种形式的代码注释:块注释、行注释以及文档注释。
使用注释的建议有以下:

  1. 仅仅注释那些复杂的操作、算法,还有不够一目了然的代码。
  2. 注释和代码隔开一定的距离,不要过于紧凑,块注释后最好留几行空白。
  3. 给外部可访问的函数和方法添加文档注释。

建议5:通过适当添加空行使代码布局更为优雅、合理

下图可供参考

建议6:编写函数的4个原则

  1. 函数设计要尽量短小,嵌套层次不宜过深。
  2. 函数声明应做到合理、简单、易于使用(函数名易于理解、参数简洁)。
  3. 函数参数设计应该考虑向后兼容(易于后续版本开发)。
  4. 一个函数只做一件事。尽量保证函数语句粒度的一致性。
    建议7:将常量集中到一个文件

很少用到这一点,可以用过自定义类实现常量功能。
建议8:利用assert语句来发现问题

断言(assert)在很多语言中都存在,主要为调试程序服务,能够快速方便检查程序的异常或不恰当的输入等。
要注意的是使用assert是有代价的,它会对性能产生一定的影响,可以不用尽量不用。
建议9:数据交换值的时候不推荐使用中间变量

在Python,交换两个变量的值不需要中间变量

a = 10
b = 11

#不推荐的做法
tmp = a
a = b
b = tmp       

#pythonic的交换方式,无需中间变量且效率更高
a, b = b, a
12345678910

建议10:充分利用Lazy evaluation的特性

Lazy evaluation可以理解为延迟计算或惰性计算,可带来的好处有两个方面:

  1. 避免不必要的计算,提升效率
    对Python中的条件表达式 if x and y , 当x为False的情况下直接返回False,程序不会计算y表达式的值。对于if x or y, 当x为True时,也不会计算y表达式的值并直接返回True。
  2. 节省空间,使无限循环的数据结构称为可能
    生成器了解一下?Python迭代器和生成器
  • 建议11:理解枚举替代实*
  • 建议12:不推荐使用type来进行*
  • 建议13:尽量转换为浮点类型后*
  • 建议14:警惕eval()的*
  • 建议15:使用enumerate()获取序列迭代的*
  • 建议16:分清=与is的*
  • 建议17:考虑兼容性,尽可能使用Uni*
  • 建议18:构建合理的包层次来管理mo*
  • 建议19:有节制地使用from…impo*
  • 建议20:优先使用absolute import来*
  • 建议21:i+=1 不等于*
  • 建议22:使用with自动*
  • 建议23:使用else子句简化循环(异*
  • 建议24:遵循异常处理的几点*
  • 建议25:避免finally中可能发*
  • 建议26:深人理解None,正确判断对象*
  • 建议27:连接字符串应优先使用join*
  • 建议28:格式化字符串时尽量使用.format方式*
  • 建议29:区别对待可变对象和不*
  • 建议30:[]、()和{}: 一致的容器初*
  • 建议31:记住函数传参既不是传值也不*
  • 建议32:警惕默认参数潜*
  • 建议33:慎用*
  • 建议34:深入理解str()和repr(*
  • 建议35:分清staticmethod和classmethod的*
  • 建议36:掌握字符串的*
  • 建议37:按需选择sort()或者sort*
  • 建议38:使用copy模块深*
  • 建议39:使用Counter进行*
  • 建议40:深入掌握ConfigPa*
  • 建议41:使用argparse处理命*
  • 建议42:使用pandas处理大型C*
  • 建议43:一般情况使用ElementTree解*
  • 建议44:理解模块pick*
  • 建议45:序列化的另一个不错的选择—*
  • 建议46:使用traceback获*
  • 建议47:使用logging记录*
  • 建议48:使用threading模块编写多*
  • 建议49:使用Queue使多线程编*
  • 第5章 *
  • 建议50:利用模块实现*
  • 建议51:用mixin模式让程序*
  • 建议52:用发布订阅模式实*
  • 建议53:用状态模式*
  • 第6章 *
  • 建议54:理解build-in obj*
  • 建议55:init() 不是*
  • 建议56:理解名字*
  • 建议57:为什么需要se*
  • 建议58:理解MRO*
  • 建议59:理解描*
  • 建议60:区别getattr()和getattribute*
  • 建议61:使用更为安全的prop*
  • 建议62:掌握metac*
  • 建议63:熟悉Python*
  • 建议64:利用操作符重载实现*
  • 建议65:熟悉Python的迭*
  • 建议66:熟悉Python*
  • 建议67:基于生成器的协程及gree*
  • 建议68:理解GIL*
  • 建议69:对象的管理与*
  • 第7章 使用工具辅助*
  • 建议70:从PyP*
  • 建议71:使用pip和yolk安装*
  • 建议72:做paste*
  • 建议73:理解单元*
  • 建议74:为包编写*
  • 建议75:利用测试驱动开发提高代码*
  • 建议76:使用Pylint检查*
  • 建议77:进行高效的*
  • 建议78:将包发布到*
  • 第8章 性能剖*
  • 建议79:了解代码优化的*
  • 建议80:借助性能*
  • 建议81:利用cProfile定位*
  • 建议82:使用memory_profiler和objgrash剖析*
  • 建议83:努力降低算*
  • 建议84:掌握循环优化的*
  • 建议85:使用生成器*
  • 建议86:使用不同的数据结构*
  • 建议87:充分利用se*
  • 建议88:使用meltiprocessing克服GI*
  • 建议89:使用线程池*
  • 建议90:使用C/C++模块扩展*
  • 建议91:使用Cython编写扩展模块

原文地址:https://www.cnblogs.com/zhuyuanying123--/p/11069768.html

时间: 2024-10-10 14:57:28

编写高质量Python程序的91个建议(转)的相关文章

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

编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断值是否相等 2.(建议23)for,while,和try语句后面都可以跟else语句,可以简化代码 3.(建议18) __init__.py模块可以写代码,import时只需要 import 包(文件夹) 4.(建议19)用import a 而不是 from a import b ,可以避免嵌套导入

编写高质量Python代码的59个有效方法

作者Brett Slatkin是 Google公司高级软件工程师.他是Google消费者调查项目的工程主管及联合创始人,曾从事Google App Engine的Python基础架构工作,并利用Python来管理众多的Google服务器.Slatkin也是PubSubHubbub协议的联合创始人,还用Python为Google实现了针对该协议的系统.他拥有哥伦比亚大学计算机工程专业学士学位. 精彩书评 "Slatkin所写的这本书,其每个条目(item)都是一项独立的教程,并包含它自己的源代码.

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

Effective Python之编写高质量Python代码的59个有效方法

                                                     这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值.下面将以最简单的方式记录这59条建议,并在大部分建议后面加上了说明和示例,文章篇幅大,请您提前备好瓜子和啤酒! 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,python2和pyt

编写高质量Python代码的59个有效方法(转)

第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,python2和python3 (2)有很多流行的Python运行时环境,CPython.Jython.IronPython以及PyPy等 (3)在开发项目时,应该优先考虑Python3 第二条:遵循PEP风格指南 PEP8是针对Python代码格式而编订的风格指南,参考:http://www.python.org/dev/peps/pep-0008 (1)当编写Python代码时,总是应该遵循PEP8风格指南

《编写高质量代码 改善python程序的91个建议》第二章 惯用法 8-18

建议8:调试语句assert expression, "sentence", python -O xx.py 可以禁用断言,建议少用断言: 建议9:数据交换不推荐使用中间值 语句执行时间: from timeit import Timer Timer('x,y = y,x').timeit() ## x,y = y,x 相当于元组(x,y)= (y,x) 涉及packing和unpacking def swap() x = 2 y = 3 x,y = y,x import disdis

《编写高质量代码 改善python程序的91个建议》第二章 基础语法 19-35

建议19:有节制使用from...import... import    VS  from...import.... import  test                  ##  test 进入局部命令空间 + 进入系统模块字典中 sys.module['test']: from test  import  a      ##  a 进入局部命令空间  + test进入系统模块字典中(a 不在系统模块字典中): ## test_import.py from a import add fro

编写高质量代码 改善Python程序的91个建议PDF版

链接:https://pan.baidu.com/s/1iGakOIFUaOW9q8ZI7_0QXw 原文地址:http://blog.51cto.com/13929572/2174547

【社区问答第三十八期】编写高质量C程序代码

NOJ的一道题 求助大神 Java爬虫,信息抓取的实现 C++实现给多个变量传值 指针定义成全局和定义在main中为什么不一样?定义在main中执行中止 cqj慰膛哦http://p.baidu.com/itopic/main/center?uid=b2fe61626334633530376481af&gb2h咆诱推o8ic7o趾破举http://p.baidu.com/itopic/main/center?uid=437061626330663833353083af&r017仍钨抡7c6