美文网首页Pentest
Python编写规范

Python编写规范

作者: cws | 来源:发表于2016-07-12 23:32 被阅读114次

    一、代码编排

    1.缩进:使用4个空格缩进
    2.行长度:每行不要超过80个字符
    3.空行:顶级定义之间空两行,如函数或类的定义,方法定义、类定义与第一个方法之间都应该空一行。
    4.分号:行尾不要有分号,也不要用分号将两条命令放在一行,除非是:1.长的导入模块语句。2.注释里的URL.3.可以使用圆括号实现隐式行连接
    

    二、文档编排

    1.导入:模块注释->文档字符串->导入->模块全局变量->常量
            导入顺序:标准库导入->第三方库导入->应用程序指定库导入
    2.import:不要在一行中import多个库,一行中只导入一个
    

    三、空格

    1.不要在逗号、分号、冒号前加空格,但应在他们后面加(除了在行尾)
    2.二元操作符(赋值、比较、布尔)两边都加空格
    3.当"="用于指示关键字参数或默认参数值是,不要再其两侧使用空格
    4.","和"#"和"="不需要对齐,因为空格会成为维护的负担
    

    四、注释

    总体原则,错误的注释不如没有注释。
    注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。
    1.块注释:在一段代码前增加的注释。在"#"后加一空格。段落之间以只有"#"的行间隔。
    2.行注释,在一句代码后加注释。进来少使用.
    3.绝不要描述代码. 假设阅读代码的人比你更懂Python, 他只是不知道你的代码要做什么.
    

    五、文档描述

    1.为所有的共有模块、函数、类、方法写docstrings;非共有的没有必要,但是可以写注释(在def的下一行)。
    2.如果docstring要换行,参考如下例子
    class SampleClass(object):
        """Summary of class here.
    
        Longer class information....
        Longer class information....
    
        Attributes:
        likes_spam: A boolean indicating if we like SPAM or not.
        eggs: An integer count of the eggs we have laid.
        """
    
        def __init__(self):
            """Inits SampleClass with blah."""
    

    六、命名规范

    1.尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。
    2.模块名尽量短小,应该用小写加下划线的方式(如lower_with_under.py).
    3.包命名尽量短小,使用全部小写的方式,不可以使用下划线。
    4.类名使用大写字母开头的单词(如CapWords, 即Pascal风格)
    5.函数命名使用全部小写的方式,可以使用下划线。
    6.变量也用小写加下划线的方式,即this_is_a_variable=1
    7.常量命名使用全部大写的方式,可以使用下划线。
    8.类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。
    9.类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。
    10.用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含).
    11.用双下划线(__)开头的实例变量或方法表示类内私有.
    

    七、Main:即使是一个打算被用作脚本的文件, 也应该是可导入的.

    并且简单的导入不应该导致这个脚本的主功能(main functionality)被执行
    代码应该在执行主程序前总是检查 if __name__ == '__main__'
        def main():
            ...
    
        if __name__ == '__main__':
            main()
    

    八、字符串:

    避免在循环中用+和+=来累加字符串,可以将每个子串加入列表,然后再循环结束后使用.join连接列表
        items = ['<table>']
        for last_name, first_name in employee_list:
            items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
        items.append('</table>')
        employee_table = ''.join(items)
    同一文件中保持使用字符串引号的一致性
    多行字符串使用三重"双"引号,不过通常使用括号隐式连接
    

    九、其他

    括号:宁缺毋滥的使用括号
    类:若一个类不继承自其它类,就显式的从object继承,即使是嵌套类
    语句:通常每个语句独占一行,try/except一定不放在一行
    文件和sockets:在文件和sockets结束时,显式的关闭它,推荐with语句管理文件

    相关文章

      网友评论

      • 4588e4274830:楼主,py,php,web安全都学么?
        cws:@代码描绘人生 学的web安全,py可以写工具,肯定是要掌握的,目前还在学习中。php略有了解
      • 代号027:是Pep8规范吧
        cws:@一点简单 是的

      本文标题:Python编写规范

      本文链接:https://www.haomeiwen.com/subject/ryesjttx.html