zoukankan      html  css  js  c++  java
  • pep 8 规范的一些记录

    一、pep8起源

    龟叔创立Python的初衷里就有创立一个容易阅读的编程语言,所以亲自操刀写了pep8 代码规范,每个项目开始前都要有一个共识,就是自己的代码规范,pep8 就是一个很好的范本。

    二、官网链接

      https://www.python.org/dev/peps/pep-0008/

      中文翻译链接

      https://my.oschina.net/u/1433482/blog/464444

    三、重要总结

      一致性问题:

        风格指南强调一致性。项目、模块或函数保持一致都很重要。

        当遵循指南降低代码一致性,可读性的时候就不必强行修改。

      代码布局:

        缩进四个空格代替tab

        行宽79个字符,文本长块72个字符

      字符编码总是用UTF-8

      导入模块:

        导入时单行导入,开头导入,

        顺序为标准库,本地库,第三方库,

        尽量使用绝对路径,不用通配符导入,

      空格:

        括号内没有空格,

        关键字参数和默认值参数的前后不要加空格

        逗号,分号,冒号前无空格

        运算符后有空格,

      不推荐复合语句,一句一行

      用英文写注释,及时更新注释,少用行内注释,文档字符串:为所有公共模块、函数、类和方法书写

      命名:    

        最重要的原则

        用户可见的API命名应遵循使用约定而不是实现。(不太明白)

        命名风格  

    • b(单个小写字母)

    • B(单个大写字母)

    • lowercase(小写串)

    • lower_case_with_underscores(带下划线的小写)

    • UPPERCASE(大写串)

    • UPPER_CASE_WITH_UNDERSCORES(带下划线的大写串)

    • CapitalizedWords(首字母大写的单词串或驼峰缩写)注意: 使用大写缩写时,缩写使用大写字母更好。故 HTTPServerError 比 HttpServerError 更好。

    • mixedCase(混合大小写,第一个单词是小写)

    • Capitalized_Words_With_Underscores(带下划线,首字母大写,丑陋)

    首尾有下划线的情况:

    • _single_leading_underscore:(单前置下划线): 弱内部使用标志。 例如"from M import " 不会导入以下划线开头的对象。

    • single_trailing_underscore_(单后置下划线): 用于避免与 Python关键词的冲突。 例如:Tkinter.Toplevel(master, class_='ClassName')

    • __double_leading_underscore(双前置下划线): 当用于命名类属性,会触发名字重整。 (在类FooBar中,__boo变成 _FooBar__boo)。

    • __double_leading_and_trailing_underscore__(双前后下划线):用户名字空间的魔法对象或属性。例如:__init__ , __import__ or __file__,不要自己发明这样的名字。

    命名约定规范

    • 避免采用的名字

    决不要用字符'l'(小写字母el),'O'(大写字母oh),或 'I'(大写字母eye) 作为单个字符的变量名。一些字体中,这些字符不能与数字1和0区别。用'L' 代替'l'时。

    • 包和模块名

    模块名要简短,全部用小写字母,可使用下划线以提高可读性。包名和模块名类似,但不推荐使用下划线。

    模块名对应到文件名,有些文件系统不区分大小写且截短长名字,在 Unix上不是问题,但当把代码迁移到 Mac、Windows 或 DOS 上时,就可能是个问题。当然随着系统的演进,这个问题已经不是经常出现。

    另外有些模块底层用C或C++ 书写,并有对应的高层Python模块,C/C++模块名有一个前置下划线 (如:_socket)。

    • 类名

    遵循CapWord。

    接口需要文档化并且可以调用时,可能使用函数的命名规则。

    注意大部分内置的名字是单个单词(或两个),CapWord只适用于异常名称和内置的常量。

    • 异常名

    如果确实是错误,需要在类名添加后缀 "Error"。

    • 全局变量名

    变量尽量只用于模块内部,约定类似函数。

    对设计为通过 "from M import " 来使用的模块,应采用 __all__ 机制来防止导入全局变量;或者为全局变量加一个前置下划线。

    • 函数名

    函数名应该为小写,必要时可用下划线分隔单词以增加可读性。 mixedCase(混合大小写)仅被允许用于兼容性考虑(如: threading.py)。

    • 函数和方法的参数

    实例方法第一个参数是 'self'。

    类方法第一个参数是 'cls'。

    如果函数的参数名与保留关键字冲突,通常在参数名后加一个下划线。

    • 方法名和实例变量

    同函数命名规则。

    非公开方法和实例变量增加一个前置下划线。

    为避免与子类命名冲突,采用两个前置下划线来触发重整。类Foo属性名为__a, 不能以 Foo.__a访问。(执著的用户还是可以通过Foo._Foo__a。) 通常双前置下划线仅被用来避免与基类的属性发生命名冲突。

    • 常量

    常量通常在模块级定义,由大写字母用下划线分隔组成。比如括MAX_OVERFLOW和TOTAL。

    • 继承设计

    考虑类的方法和实例变量(统称为属性)是否公开。如果有疑问,选择不公开;把其改为公开比把公开属性改为非公开要容易。

    公开属性可供所有人使用,并通常向后兼容。非公开属性不给第三方使用、可变甚至被移除。

    这里不使用术语"private", Python中没有属性是真正私有的。

    另一类属性是子类API(在其他语言中通常称为 "protected")。 一些类被设计为基类,可以扩展和修改。

    谨记这些Python指南:

    1. 公开属性应该没有前导下划线。

    2. 如果公开属性名和保留关键字冲突,可以添加后置下划线

    3. 简单的公开数据属性,最好只公开属性名,没有复杂的访问/修改方法,python的Property提供了很好的封装方法。 d.如果不希望子类使用的属性,考虑用两个前置下划线(没有后置下划线)命名。

    公共和内部接口

    任何向后兼容的保证只适用于公共接口。

    文档化的接口通常是公共的,除非明说明是临时的或为内部接口、其他所有接口默认是内部的。

    为了更好地支持内省,模块要在__all__属性列出公共API。

    内部接口要有前置下划线。

    如果命名空间(包、模块或类)是内部的,里面的接口也是内部的。

    导入名称应视为实现细节。其他模块不能间接访名字,除非在模块的API文档中明确记载,如os.path中或包的__init__暴露了子模块。

        

  • 相关阅读:
    How To Change Database Name
    Oracle备份与恢复案例
    Linux 下安装 Oracle9i
    在 Linux x86 上安装 Oracle 数据库 10g_1
    在 Linux x86 上安装 Oracle 数据库 10g_2
    Oracle9i数据库DataGuard实施及维护手册2
    在 Linux x86 上安装 Oracle 数据库 10g_3
    流程企业(钢铁企业)的制造执行系统
    理解和使用Oracle分析工具LogMiner
    Oracle9i数据库Data Guard实施及维护手册 1
  • 原文地址:https://www.cnblogs.com/xinghuaikang/p/8486493.html
Copyright © 2011-2022 走看看