编写高质量Python程序(一)基本准则
程序员文章站
2022-11-21 10:08:29
本系列文章为《编写高质量代码——改善Python程序的91个建议》的精华汇总。 理解Pythonic概念 什么是 Pythonic? Pythonic的代码就是具有Python独特风格的代码。通俗说来,就是在保证代码可读性的前提下,尽可能地简洁、优雅,看起来像伪代码一样。 具有 Python 代码风 ......
本系列文章为《编写高质量代码——改善python程序的91个建议》的精华汇总。
理解pythonic概念
-
什么是 pythonic?
pythonic的代码就是具有python独特风格的代码。通俗说来,就是在保证代码可读性的前提下,尽可能地简洁、优雅,看起来像伪代码一样。
-
具有 python 代码风格的例子
- 交换两个变量。其他语言交换两个变量时,一般需要一个临时的中间变量,而python中可以用一行代码直接交换。
- for循环直接遍历容器。其他语言中,需要根据索引下标i对容器进行遍历,而python可以用for循环直接遍历容器。
-
使用
str.format()
格式化字符串,是最pythonic的字符串格式化方法。
# 交换两个变量 a, b = b, a # for循环遍历容器 for elem in alist: do_sth_with(elem) # format格式化字符串 print("{greet} from {language}!".format(greet="hello, world!", language="python"))
- python的库和框架:现有的框架就好比现有的“*”,学会利用这些框架,不重复造*。
编写pythonic代码
注意要避免的事:
- 避免只用大小写来区分不同的对象。
- 避免使用容易混淆的名称。
- 不要害怕过长的变量名。能表达清楚变量代表的含义即可。
深入理解pythonic的几个途径:
- 学习语言特性和库特性时,从官方文档入手, 仿照他们的书写规范。
- python的版本更新快,跟进前言,掌握新特性。
- 学习业界公认的pythonic代码,如flask、gevent和requests等。
理解python和c语言的不同之处
-
“缩进”和“{}”: c语言用花括号
{}
分隔代码块,python中用缩进分隔,避免混用空格和tab键。 -
'
与"
: 在c语言中,单引号'
表示单个的字符型数据(char),双引号"
表示字符串,默认以\0
结尾;在python中,'
和"
无明显区别。 -
三元操作符
?:
: c语言中的三元操作符c?x:y
,表示当条件c为true的时候,取值x,否则取值y。在python中的等价形式为x if c else y
。 -
switch...case: c语言中的
switch...case
分支语句,python中可以使用if...elif...else...
代替。
在代码中添加注释
python中有3种形式注释:
- 块注释
- 行注释
- 文档注释(dostring)
需要注意:
- 使用块或行注释时,仅仅注释那些复杂操作、算法,还有那些难以理解的、不够一目了然的代码。
- 注释和代码隔开一定距离。
x = x + 1 # 这样的注释略近 x = x + 1 # 更好的注释位置
- 给外部可访问的函数或方法添加文档注释。描述其功能、参数、返回值及可能的异常等信息。例如:
def get_lines(name, lines): """return lines that begin with name. lines are expected to look like: name: space separated values args: name: string, parameter name. lines: iterable of string, lines in the file. returns: list of values in the lines that match. """ retval = [] matches = itertools.ifilter(lambda x: x.startswith(name + ":"), lines) for line in matches: retval.extend(line[len(name) + 1 :].split()) return retval
- 建议在文件头包含copyright声明、模块描述,有必要的话还可以加入作者信息。例如:
#!/usr/bin/python # -*- coding: utf-8 -*- # # copyright 2014 google inc. all rights reserved. # # licensed under the apache license, version 2.0 (the "license"); # you may not ...
- 更新代码之后,注释要和代码同步更新。在实际工作中,很容易发生代码不断迭代,而忘了更新注释的情况,需要加以小心。
适当添加空行,使代码布局更优雅、合理
- 在一组代码表达完一个完整思路之后,应用空行进行分隔。
- 保持上下文语义的易理解性。 当一个函数调用另一个函数时,尽量将它们放在一起,一般调用者在上,被调用者在下。
def a(): b() def b(): pass
-
空格的使用
- 二元运算符(赋值
=
,比较(==, <, >, !=, <=, >=, in, not in, is, is not
),布尔运算(and, or, not
))的左右两边。如x == 1
- 逗号和分号前不要使用空格。
- 函数名和左括号之间、序列索引操作时序列名和
[]
之间不需要空格,函数的参数=
两侧不需要空格。
- 二元运算符(赋值
编写函数的4个原则
- 函数设计尽量短小,嵌套层次不宜过深。
- 函数声明需合理、简单、易于使用。
- 函数参数设计时,应考虑向下兼容(兼容之前的版本)。
- 一个函数只做一件事(解耦合)。
- 参考:《编写高质量代码——改善python程序的91个建议》
本文由博客群发一文多发等运营工具平台 openwrite 发布
上一篇: 当一家人开始减肥
下一篇: 那女人手里握着什么?
推荐阅读
-
第一个Python程序
-
使用Python的Tornado框架实现一个一对一聊天的程序
-
用Python程序抓取网页的HTML信息的一个小实例
-
用python写的一个wordpress的采集程序
-
怎样用 Python 写一个股票自动交易的程序?(不包含交易算法)?
-
13. 编写一个程序,提示用户输入3组数,每组数包含5个double类型的数(假设用户都正确地响 应,不会输入非数值数据)。该程序应完成下列任务。
-
Python使用SocketServer模块编写基本服务器程序的教程
-
使用Python3 编写简单信用卡管理程序
-
Python使用SocketServer模块编写基本服务器程序的教程
-
使用Python编写一个最基础的代码解释器的要点解析