python的统一编码规范
请注意这一点:没有编码规范的代码没有阅读价值,也更谈不上复用。
目前业界比较流行的Python的编码规范目前主要有PEP8的编程、Google的编码风格、Python Guide和Pocoo StyleGuide等等,我认为无论是哪一种编码规范和风格,最重要的是要在团队中有一套统一或者近乎一致的编码规范和风格,这样才能确保协作效率和降低沟通成本。目前我所在的团队并没有一套规范,那么这个伟大的任务又要落在我手里来实现啦,哇哈哈:-D。
先说明一下,设计这套统一编码规范的原则只有一个:Simple is the best,简单实用是核心指导原则,编码规范要符合编码习惯和提升代码可读性。这套编码规范是基于PEP8规范的,但是同时参考Google的编码风格和大神编写的"Strunk & White"风格。
命名
文件名、包名、模块名:全小写,使用下划线可以改善可读性可以加入,如my_package。
类:总是使用首字母大写单词串。如MyClass。
函数、方法:函数名应该为小写,可以用下划线风增加可读性,如my_example_function。
变量:小写,尽量避免单字母变量,尽量让变量有意义。
常量:要求全部字幕大写,可以用下划线风增加可读性,如GLOBAL_VAR_NAME。
内部(Internal):使用(_)开头表示模块变量或函数是protected 的(使用import * from时不会包含);使用(__)开头表示实例变量或方法表示类内私有,类实例不能调用。
缩写:名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式。 例如:function 缩写为 fn;text 缩写为 txt ;object 缩写为 obj ;count 缩写为 cnt;number 缩写为 num 等。
布局
最重要的话写在第一句:如果懒得跟我一样的话,使用pycharm IDE用快捷键Ctrl+Alt+L就可以完成统一的代码布局。
在不使用这个IDE或者忘了用快捷键的情况下,请注意以下统一的代码布局:
代码长度:每行不超过80个字符。这一点pycharm没有这么严格,但是希望大家尽力做到,这样确保其他同事可以轻松愉快地阅读每一行代码。
空行:用两行空行分割顶层函数和类的定义,类内方法的定义用单个空行分割。
缩进:使用4个空格作为一个缩进层次,尽量不要用8个空格。
分号:不要使用分号,尽管是用了也没有错。
括号:括号使用原则是越少越好,不要在返回语句或者条件语句中使用括号,例如:


空格(请尽量不要用制表符TAB,如果用了请保持一致):
括号内不使用空格;

不在逗号和冒号前使用空格,在其后面添加(跟英文写作一样);

二元操作符 【赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, notin, is, is not), 布尔(and, or, not)】两边都使用空格,

参数列表里不要带空格

以上截图来自《Google python style guide》
注释
python单行注释用#字符开头即可注释后面的内容,对于重要语句进行注释包括解释说明和提醒的作用。 python多行注释可以用’’’或者”””开头并以相同的用’’’或者”””结尾即可注释多行语句。
特别说明: python的方法内置对象doc String ,它可以用于模块、函数和类的描述,在写方法的时候,只要在方法声明下面进行多行注释。在引用或者使用的场景下,可以通过dir或者help方法可以查看该方法的使用帮助。python的方法注释可以参照下图,pycharm支持自动生成注释,比较方便。

Python 有一种独一无二的的注释方式: 使用文档字符串. 文档字符串是包, 模块, 类或函数里的第一个语句. 这些字符串可以通过对象的__doc__成员被自动提取, 并且被pydoc 所用. (你可以在你的模块上运行pydoc 试一把, 看看它长什么样). 我们对文档字符串的惯例是使用三重双引号. 一个文档字符串应该这样组织: 首先是一行以句号, 问号或惊叹号结尾的概述. 接着是一个空行. 接着是文档字符串剩下的部分, 它应该与文档字符串的第一行的第一个引号对齐。注意上图中的函数注释,文档字符串应该包含函数做什么, 以及输入和输出的详细描述. 通常, 不应该描述”怎么做”, 除非是一些复杂的算法. 对于技巧性的代码, 块注释或者行内注释是最重要的. 文档字符串应该提供足够的信息, 当别人编写代码调用该函数时, 他不需要看一行代码, 只要看文档字符串就可以了. 应该给参数单独写文档. 在冒号后跟上解释,
导入
可以使用两种导入的方法:
1.使用 import x 来导入包和模块。
2.使用 form x import y , 其中x 是包前缀, y 是不带前缀的模块名。
在后面讲述的common-lib库中,建议大家使用from common-lib import *这样的导入,在这个自定义库的__init__.py文件中已经定义了哪些可以导入哪些不需要导入。比较方便。
使用上述的导入方法的时候,要使用绝对路径而非相对路径,避免重复导入。
Main入口
要求所有新建的py文件都要有Main的入口,且必须总是检查该导如的主程序是否被执行。
Pycharm支持python代码模板,建议大家使用这个模板。
#-*- encoding:UTF-8 -*-
from __future__ import division
import sys __author__ = '$USER'
def main():
pass if __name__ == '__main__':
reload(sys)
print "START: system-encoding[%s]"%sys.getdefaultencoding()
main()
这个代码执行的时候先检查系统的编码,这个TIP是我踩过很多坑之后的教训,这样可以让你每次都知道当前程序运行的编码。
参考文档
《Google-Python-Style-Guide》
《Python开发编码规范(PEP8)》
《The Elements of Python Style》
python的统一编码规范的更多相关文章
- 学习笔记之Python最简编码规范
Python最简编码规范 - 机器学习算法与Python学习 https://mp.weixin.qq.com/s/i6MwvC4jYTE6D1KHFgBeoQ https://www.cnblogs ...
- Python 常用 PEP8 编码规范
Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- Python PEP 8 编码规范中文版
原文链接:http://legacy.python.org/dev/peps/pep-0008/ 转发链接:https://blog.csdn.net/ratsniper/article/detail ...
- Python最简编码规范
前言 本文是阅读<Python Coding Rule>之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考. ...
- Python第一章-编码规范
Python的基础知识 一.编码规范 PEP8[^ 注] 编码规范 Guido的关键点之一是:代码更多是用来读而不是写.编码规范旨在改善Python代码的可读性. 风格指南强调一致性.项目.模块或函数 ...
- 【转】python - PyDev统一编码
http://www.cnblogs.com/huangjacky/archive/2012/07/15/2592166.html 我们都知道Win7默认编码是GBK,而Ubuntu下面默认是utf- ...
- Python基础:编码规范(4)
1.命名规范 Python中不同代码元素采用不同命名方式: ◊ 包名:全部小写字母,中间可以由点分隔开.作为命名空间,包名需具有唯一性. ◊ 模块名:全部小写字母,如果是多个单词构成,使用下划线分隔. ...
- [python]python官方原版编码规范路径
1.进入python官方主页:https://www.python.org/ 2.按如下图进入PEP Index 3.选择第8个,即为python的规范
- Python 常用 PEP8 编码规范和建议
代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: # (垂直隐式缩进)对准左括号 foo = long_function_name(var_one, va ...
随机推荐
- Java中常用的正则表达式
常用的正则表达式 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的 ...
- C#神器 委托 + Unity神器 协程
作为源生的C#程序员,可能已经非常了解委托(delegate).行动(Action)以及C#的事件了,不过作为一个半道转C#的程序员而言,这些东西可能还是有些陌生的,虽然委托并非是C#独创,亦非是首创 ...
- NSData 与 struct 以及XML的转换。
在做OC与C++ 混编的时候,我们可能会用到struct 与NSData的相互转换.在这里做一个记录 1.struct转换为NSData 例如如下的struct: struct tagPackageH ...
- SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法
1.SpringMVC中通过@ResponseBody.@RequestParam默认值,@PathVariable的用法 package com.kuman.cartoon.controller.f ...
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
这是几个月以前的东西了,在彻底遗忘之前拿出来好好写写.做个笔记,也算是造福后来人了.在做这个项目之前,没有做过电容屏的驱动,印象中的电容触摸屏是不需要校正的.IC支持多大的屏就要配多大的屏.但是拿到需 ...
- HTML入门笔记案例展示(2)
结上一篇(1)http://blog.csdn.net/qq_32059827/article/details/51399288 6.超链接(重要): 超链接标签 就是 a 标签 <!-- 超链 ...
- 一个小公式帮你轻松将IP地址从10进制转到2进制
网络工程师经常会遇到的一个职业问题:如何分配IP,通过子网如何捕捉某一网段或某台机器?他们甚至能够进行精准的分析和复杂的开发......凡此种种,其实与一些他们头脑中根深蒂固的常识性理论存有某种内在的 ...
- opencv读写视频,对感兴趣区域进行裁剪
作为小码农,本人最近想对一段视频的某个区域进行处理,因此要将该段视频区域裁剪出来,搜搜网上,发现没有痕迹,是故自己琢磨一下,左右借鉴,编了如下代码,目标得以实现,希望对你有用. #include &q ...
- Android4.0Sd卡移植之使用vold自动挂载sd卡
在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载. 后来发现是因为自动挂载需要vold的支持.vold程序负责检查内核的 sysfs 文件系统,发现有SD ...
- PS图像特效算法——百叶窗
这个只要设置好条纹的宽度和条纹的间隔,建立一个遮罩层,等间隔的对原图进行等间距的遮罩. clc; clear all; Image=imread('4.jpg'); Image=double(Imag ...