写代码注释是一件很重要的事情,如果你写的一段函数给别人调用那么往往都需要配上一些基本的注释。写好代码可以让别人容易阅读你的代码。试想一 下:如果你在github上面找到一段你想要的代码,这段代码有200行,可能这些代码我们要进行改造,那么这时候如果代码中都没有恰当的注释,我们可能要用比较久的时间去通读一下他的代码。

相反,如果这些代码有一些恰当的注释,我们可能会更加好理解一点。学会注释是编码过程中不可或缺的一部分。那么什么样的注释才是规范的注释,才能让其他看你代码的人能快速的了解你得代码结构呢。我们今天就说一说 有关于Python的一些注释规范。

在说规范之前我们有必要先看以下Python的注释有哪些?

  • 单行注释
  • 多行注释
  • 特殊注释

按照每一个注释进行简单的介绍(我们截选request库的一段文件):

第一行第二行:为上述所说的特殊注释,这两个注释也几乎是在你所编写的每一个py文件中应该存在的,正常情况下第一第二行通用格式。

关于 #!/usr/bin/env python

1、必须是文件的第一行

2、必须以#!开头

3、#!/usr/bin/env python告诉LINUX/UNIX去找到python的翻译器。

关于: # -*- coding: utf-8 -*-

1、基本上在文件的第二行,在#!/usr/bin/env python的下一行

2、python interpret如何解释字符串的编码

3、当你的文件中出现中文的时候,你必须使用它

第四到第十三行:为上述所说的所行注释。多行注释,以三个引号开始,三个引号结尾。这三个引号可以使单引号也可以是双引号。

1、一般类文档,函数文档,字符串之类的用双引号,变量用单引号。

第二十一行:我们所说的单行注释,单行注释以#开头标识。

你也可以连续多次使用#单行注释来代替多行注释,但是我们并不推荐那么做。

知道了上述的注释之后,我们需要知道的是在哪些场合使用哪些注释。

第一点:为了避免麻烦,在文件的开头加上这两句。

#!/usr/bin/env python    # -*- coding: utf-8 -*

第二点:每一个Python文件的开头,紧接着第一点所说的两行代码之后,我们往往要写上关于这个模块即这个Python文件实现的功能一些注意点,可能会发生的错误,总之你得注释要让使用它的人很明白你得代码段,比如:

"""   
 requests.cookies  
  ~~~~~~~~~~~~~~~~   
 Compatibility code to be able to use `cookielib.CookieJar` with requests.   
 requests.utils imports from here, so be careful with imports.   
 """

或者

"""   
 This is the Scrapy engine which controls the Scheduler, Downloader and Spiders.   
 For more information see docs/topics/architecture.rst   
 """

可能,你不看代码,都已经知道接下来的是什么了,那么你能找到上面这个注释是出自哪个文件吗?

第三点:每一个类下面加上关于这个类的说明以及用法,这样使用它的人可能都不要知道他的内部构造,就可以使用他了,我们看看这个。

第一:这个类是干嘛的?

第二:经常在什么情况下使用?

第三:如何使用?

都交待说明的很详细,你不看代码估计已经会使用了。

class HTTPAdapter(BaseAdapter):  
  """The built-in HTTP Adapter for urllib3.    
 Provides a general-case interface for Requests sessions to contact HTTP and    HTTPS urls by implementing the Transport Adapter interface. 
This class will   usually be created by …… """

第四点:每一个函数下面务必加上多行注释,很有可能你的函数注释只有一行,或者两行,你可以使用单行注释,也可以使用多行注释,这里与类函数说明相当,注释中往往包含使用说明,注意点。

def __setstate__(self, state):    
# Can't handle by adding 'proxy_manager' to self.__attrs__ because    
# self.poolmanager uses a lambda function, which isn't pickleable.

或者

def has_capacity(self):  
  """Does the engine have capacity to handle more spiders"""   
  return not bool(self.slot)

第五点:在必要的地方加上单行注释。这些地方不外乎

1、你不怎么理解的代码

2、别人可能不理解的代码

3、提醒自己或者别人注意的代码、重要代码

self.inprogress = set() # requests in progress    assert not self.running, "Engine already running"

以上,更多的编码习惯。你可以去读一读,request的代码。

原文地址: http://www.chinaznyj.com/ZhiNengYun/1599.html

你来人间一趟
你要看看太阳
和你的心上人
一起走在街上

Python里的一些注释规范的更多相关文章

  1. PythonStudy——Python 注释规范

    注释规范:   什么是注释?  注释:不会被python解释器解释执行,是提供给开发者阅读代码的提示 单行注释: # 开头的语句 多行注释:出现在文件最上方,用''' '''包裹的语句   Pycha ...

  2. 每天学一点——python注释规范

    python注释规范 python注释语法 这个是注释 注释是不影响代码运行的 当然注释也是有书写规范的,就像图片中的 注释前面#加空格再加上这条代码的注释(单行注释用#) 不然你会得到下面的结果 * ...

  3. Python下划线与命名规范

    Python下划线与命名规范 先看结论,节省只想知道答案你的宝贵时间: _xxx 不能用于from module import * 以单下划线开头的表示的是protected类型的变量.即保护类型只能 ...

  4. sublime注释插件与javascript注释规范

    前言 代码中注释是不可少的,即使是自己写的代码,过了一段时间之后再重看,如果没有注释记录的话,可能会想不到当初是这样实现的,尤其是在业务逻辑比较复杂的项目,注释变得尤为重要.怎么优雅的写有用的注释呢? ...

  5. python 中变量的命名规范

    出自:http://www.diybl.com/course/3_program/python/20111130/563643.html 模块名: 小写字母,单词之间用_分割 ad_stats.py ...

  6. Sublime Text3 插件:DocBlockr与javascript注释规范

    原:http://www.ithao123.cn/content-719950.html 1.引子 在写代码的时候,尤其是写脚本,最需要注释了.目前脚本.样式的注释格式都有一个已经成文的约定规范(这些 ...

  7. C/C++注释规范

    C/C++注释规范 Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C.C++.Java.Objective-C和IDL语言,部分支持PHP.C#.鉴于Doxygen ...

  8. java注释规范

    前言:      现在java的出产地sun公司并没有定义一个java注释规范,注释规范目前是每个公司自己有自己的一套规范,主要是为了团队之间的协作. 1.基本规则      1.注释应该使代码更加清 ...

  9. java代码注释规范

    java代码注释规范   代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率.也是程序代码可维护性的重要环节之一.所以我们不是为写注释而写注释.下面说一下我们在诉求网二 ...

随机推荐

  1. 隐藏video标签的下载按钮

    问题: 使用video标签时,有些浏览器会显示视频的下载按钮,而这并不是我们需要的功能,必须想办法去掉. 解决方法: 使用下面的css可以达到隐藏下载按钮的效果,但是点击下载的位置,还是能出现开始下载 ...

  2. POSTMAN编写文档

    第一步:创建文件夹: 同时创建全局变量: 第二步:创建分组文件夹: 第三步:添加请求: 类似正常调试,然后多了一步保存: 保存: 请求方式发生相应变化,同时颜色也发生变化,说明保存成功: ====== ...

  3. 洛谷——P1141 01迷宫

    P1141 01迷宫 题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任 ...

  4. db2 获取自增主键的方法

    1.用SEQUENCES方式 建表语句 CREATE TABLE TEST1( PKEY INTEGER NOT NULL, NAME VARCHAR(100), SEX VARCHAR(100), ...

  5. 如何使用KeyChain保存和获取UDID - Flex/AS Programmer

    原文 http://www.cnblogs.com/yssgyw/p/3364370.html 本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不 ...

  6. Go -- 通过GOTRACEBACK生成程序崩溃后core文件的方法(gcore gdb)

    写一个错误的c程序   package dlsym import "testing" func Test_intercept(t *testing.T) { Intercept(& ...

  7. 使用MVP模式重构代码

    之前写了两篇关于MVP模式的文章,主要讲得都是一些概念,这里谈谈自己在Android项目中使用MVP模式的真实感受,并以实例的形式一起尝试来使用MVP模式去重构我们现有的代码. 有兴趣的童鞋可以先去阅 ...

  8. 一致性hash算法在memcached中的使用

    一.概述 1.我们的memcacheclient(这里我看的spymemcache的源代码).使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同.仅仅是对我们要存 ...

  9. SAP 锁对象 基本概念与基本操作 SE11

      一.SAP为什么要设置锁:     1,保持数据的一致性     假设几个用户要訪问相同的资源,须要找到一种同步訪问的方法去保持数据的一致性.比方说,在航班预订系统中,须要检查还有没有空座位,当检 ...

  10. PHP接收参数的几种方式

    PHP5在默认的情况下接收参数是需要使用 $_GET['value']; $_POST['value']; 还可以在PHP.ini 文件中的  将register_globals = Off  改re ...