python语言特点以及编码规范
一 、python语言特点
Python 是一个高层次的结合了解释性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。
Python 是交互式语言: 这意味着可以在一个Python提示符,直接互动执行写你的程序。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。Python可以调用c/c++程序库。python的解释型实现依赖C语言接口,几乎可以驱动所有已知的软件,模块。 只要我们用到的,通常都能找到一个开源的库,安装后就可以驱动它。无论是数据库,网络,互联网,图形,游戏,科学计算,GUI,OA,自动控制等等。
Python 特点
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:Python提供所有主要的商业数据库的接口。
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
分号:
不要在行尾加分号, 也不要用分号将两条命令放在同一行
行长度:
每行不超过80个字符
以下情况除外:
长的导入模块语句
注释里的URL
不要使用反斜杠连接行。Python会将圆括号, 中括号和花括号中的行隐式的连接起来 ,
你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。
括号:
宁缺毋滥的使用括号
除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的.
缩进:
用4个空格来缩进代码
绝对不要用tab, 也不要tab和空格混用.
空行:
顶级定义之间空两行, 方法定义之间空一行
空格:
按照标准的排版规范来使用标点两边的空格
括号内不要有空格.
python版本:
程序的main文件应该以 #!/usr/bin/python2或者 #!/usr/bin/python3开始.
注释:
确保对模块, 函数, 方法和行内注释使用正确的风格。注释尽可能的全面,确保代码可读性
类:
如果一个类不继承自其它类, 就显式的从object继承. 嵌套类也一样.
字符串:
避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建不必要的临时对象,
导致二次方而不是线性的运行时间. 作为替代方案, 你可以将每个子串加入列表,
然后在循环结束后用 .join 连接列表. (也可以将每个子串写入一个 cStringIO.StringIO 缓存中.)
另外,保持使用字符串引号的一致性
文件和sockets:
在文件和sockets结束时, 显式的关闭它.
sockets或其他类似文件的对象在没有必要的情况下打开, 会有许多副作用, 例如:
消耗有限的系统资源. 仅仅是从逻辑上关闭文件和sockets, 那么它们仍然可能会被其共享的程序在无意中
进行读或者写操作. 只有当它们真正被关闭后, 对于它们尝试进行读或者写操作将会跑出异常, 并使得问题
快速显现出来.
推荐使用 "with"语句 以管理文件,对于不支持使用"with"语句的类似文件的对象,使用 contextlib.closing()。
TODO注释:
为临时代码使用TODO注释, 它是一种短期解决方案. 不算完美, 但够好了.
导入格式:
每个导入应该独占一行
导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从
最通用到最不通用的顺序分组:
标准库导入
第三方库导入
应用程序指定导入
每种分组中, 应该根据每个模块的完整包路径按字典序排序, 忽略大小写。
命名:
应该避免的名称
单字符名称, 除了计数器和迭代器.
包/模块名中的连字符(-)
双下划线开头并结尾的名称(Python保留, 例如__init__)
命名约定
所谓"内部(Internal)"表示仅模块内可用, 或者, 在类内是保护或私有的.
用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含).
用双下划线(__)开头的实例变量或方法表示类内私有.
将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.
对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加
下划线的方式。
Main:
即使是一个打算被用作脚本的文件, 也应该是可导入的. 并且简单的导入不应该导致这个脚本的
主功能(main functionality)被执行. 应该在执行主程序前总是检查
if __name__ == '__main__' , 这样当模块被导入时主程序就不会被执行.
所有的顶级代码在模块导入时都会被执行. 要小心不要去调用函数, 创建对象, 或者执行那些不
应该在使用pydoc时执行的操作.