• Python3编码规范


    Python核心发行代码里面优先使用ASCII码或Latin-1编码。3.0后UTF-8编码优先于Latin-1。

    一 空格与缩进:
    缩进
    对于每一次缩进使用4个空格。使用括号、中括号、大括号进行垂直对齐,或者缩进对齐。
    制表符还是空格?
    永远不要将制表符与空格混合使用。Python最常用的缩进方式是只是用空格。
    当调用Python命令行的 -t 选项时,它会检测并警告代码非法混合使用制表符和空格。当使用 -tt 选项时,警告变成了错误。
    二. 主要命名规范
    模块名采用小写字母并且以下划线分隔单词的形式;

    包名应当简短,使用全小写,但是不要使用下划线

    类名采用以大写字母开头,并且以大写字母分隔单词的形式命名(驼峰式命名);

    全局或者类常量,全部使用大写字母,并且以下划线分隔单词;其余变量命名则是采用全部小写字母,并且以下划线分隔单词的形式命名。

    以上的内容如果是内部的,则使用下划线开头命名。

    类型

    公共(全局)

    内部

    模块名

    lower_with_under

    _ lower_with_under

    包名

    lowerwithoutunder

    类名

    CapWords

    _ CapWords

    异常名

    CapWords

    函数名

    lower_with_under( )

    _ lower_with_under( )

    全局/类常量

    CAPS_WITH_UNDER

    _ CAPS_WITH_UNDER

    全局/类变量

    lower_with_under

    _ lower_with_under

    实例变量

    lower_with_under

    _ lower_with_under(单下划线私有)

    __lower_with_under(双下划线避免与子类冲突)

    方法名

    lower_with_under( )

    _ lower_with_under()(单下划线私有)

    __lower_with_under()(双下划线避免与子类命名冲突)

    函数/方法参数

    lower_with_under

    本地变量

    lower_with_under

    注:

    1、from M import * 不会导入以下划线开始的对象。

    2、异常也是一个类,所以需要遵循类名规则。但如果你的异常确实是个错误的话,请使用Error前缀

    3、函数与方法参数设置时,使用self作为实例方法的第一个参数。使用cls作为类方法的第一个参数。当函数的参数名与保留字冲突时,使用下划线后缀(第二次提醒)。

    4、方法名与实例变量设置时,在私有方法和实例变量前用单下划线前缀。使用双下划线前缀来调用"name mangling"来避免与子类命名冲突。如果类Foo有个属性叫__a,那么它不能使用Foo.__a读取,但仍然可以Foo._Foo__a来读取

    5、应避免使用的命名:不要使用小写的L、大写的O、以及大写的I作为单字符变量名。__double_leading_and_trailing_underscore__:(双下划线开始和结束)存活在用户控制命名空间的"magic"对象或属性。例如__init__, __import__ 或 __file__。永远不要起这样的名字。

    三.行规范
    1、最大行长度
    限制所有行最长为79个字符。

    使用反斜杠来分行是一个很好的选择。

    我们应当选择在二元操作符(binary operator,如下述代码中的and、or以及%)之后进行分行,而不是之前。

    2、空行
    顶级函数(当前文件中的第一个函数)或者顶级类(当前文件的第一个类)之前要有两个空行

    定义在类内部的函数(成员函数)之间要留有一个空行

    可以使用额外的空行(但要注意节制)以区分不同的函数组,

    在一堆只有一行的函数之间不要使用空行(比如一些函数的空实现)

    在函数内部使用空行,来标识不同的逻辑单元

    四.注释
     误导的注释不如没有注释,注释应当为完整的句子,且句号结尾的句子后面应当有2个空格。如果注释很短那么结尾的句号可以忽略。

    1、块注释
    块注释应当和代码缩进保持一致。每行注释开头应以#开头,然后紧跟一个空格。

    2、行注释
    行注释至少和语句间隔2个空格。同样的注释应当以#开头,然后紧跟一个空格。

    五.文档字符串
    在python中,不对单引号和双引号作区分,PEP的代码规范也不对此有所推荐。任选其一,统一使用即可。然而,当一个字符串包含单引号或者双引号时,使用另外一种方式避免转义符()的使用,以提高可读性。

    对于所有的公有模块、类、函数和方法都需要编写文档字符串。

    """ 作为多行的文档字符串的结束,应该单独一行,并且之前有一个空行。

    对于只有一行的文档字符串来说,结尾的 """ 在同一行。

    六.其他建议
    1、总是在下列二元操作符的两端使用单个空格:赋值操作符(=),参数赋值(+=,-= 等),比较操作符(==,<, >, !=, <>, ⇐, >=, in, not in, is, is not),布尔操作符(and,or, not)。

    2、加入使用了多个具有不同优先级的操作符,考虑在低优先级的操作符两侧使用空格。请自行判断,无论怎样,不要使用多余一个空格,并且保持二元操作符两端的空格数量一致。

    #符合约定的代码

    i = i + 1

    submitted +=1

    x = x*2 - 1

    hypot2 = x*x + y*y

    c =(a+b) * (a-b)

    #不符合约定的代码

    i=i+1

    submitted +=1

    x = x * 2 - 1

    hypot2 = x * x + y * y

    c =(a + b) * (a - b)

    3、不要在指示关键字参数或参数默认值的 = 符号两端使用空格。 


    #符合约定的代码

    defcomplex(real, imag=0.0):

        return magic(r=real, i=imag)

    #不符合约定的代码

    defcomplex(real, imag =0.0):

        return magic(r = real, i = imag)

    4、不建议使用符合语句(在一个物理行中存在多条语句)。 



       #符合建议的代码

    if foo =='blah':

        do_blah_thing()

    do_one()

    do_two()

    do_three()

    #不符合建议的代码

    if foo =='blah':do_blah_thing()

    do_one(); do_two(); do_three()

    5、虽然有时把较短小的 if/for/while 语句放在同一物理行内也是可以的,但千万不要对多子句的语句也这样做,同时也是为了避免折叠长行。 



    #不符合约定的代码

    if foo =='blah':do_blah_thing()

    for x in lst: total += x

    while t <10: t = delay()

    #绝对不要这样写

    if foo =='blah':do_blah_thing()

    else: do_non_blah_thing()

    try: something()

    finally: cleanup()

    do_one(); do_two(); do_three(long, argument,

                                 list, like, this)

    if foo =='blah': one(); two(); three()

  • 相关阅读:
    重新理解js的执行环境和闭包
    给开发插上想象力的翅膀
    Vue源码的初始化以及数据驱动逻辑
    解析Vue源码之前
    前端模块化发展介绍和未来展望
    现代前端框架具备的特征分析及Vue、React对比
    始于Flux的单项数据流发展简单介绍
    用面向对象编程解决常见需求场景
    【Docker】之重启容器相关命令
    【Java】之获取CSV文件数据以及获取Excel文件数据
  • 原文地址:https://www.cnblogs.com/dreamhighqiu/p/11016165.html
Copyright © 2020-2023  润新知