• python通用规范-1


    文章目录

    1.1 缩进
    1.1.1 程序块采用4个空格缩进风格编写
    1.1.2 禁止混合使用空格(`space`)和跳格(`Tab`)
    1.1.3 新项目必须使用纯空格(`spaces`)来代替跳格(`Tab`)
    1.2 语句
    1.2.1 Python文件中必须使用UTF-8编码
    1.2.2 一行只写一条语句
    1.2.3 相对独立的程序块之间、变量说明之后必须加空行
    1.2.4 一行长度小于80个字符,与Python标准库看齐
    1.3 空格
    1.3.1 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符前后要加空格
    1.3.2 进行非对等操作时,如果是关系密切的立即操作符(如`.`)后不应加空格
    1.4 导入
    1.4.1 加载模块必须分开每个模块占一行
    1.4.2 导入部分(imports)置于模块注释和文档字符串之后,模块全局变量和常量声明之前
    1.4.3 避免使用`from xxx import *`的方式导入某模块的所有成员
    1.1 缩进

    1.1.1 程序块采用4个空格缩进风格编写

    说明:程序块采用缩进风格编写,缩进的空格数为4个,是业界通用的标准。
    # 错误示例:空格个数不为4个
    def load_data(dirname, one_hot=False):
    X_train = [] # 5个空格
    Y_train = [] # 5个空格

    # 正确示例:
    def load_data(dirname, one_hot=False):
    X_train = []
    Y_train = []
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1.1.2 禁止混合使用空格(space)和跳格(Tab)

    说明:推荐的缩进方式为仅使用空格(space)。仅使用跳格(Tab)也是允许的「但不推荐」。如果已有代码中混合使用了空格及跳格,要全部转换为空格。
    # 错误示例:空格和跳格混合使用
    def load_data(dirname, one_hot=False):
    X_train = [] # 跳格 Tab
    Y_train = []

    # 正确示例:
    def load_data(dirname, one_hot=False):
    X_train = []
    Y_train = []
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1.1.3 新项目必须使用纯空格(spaces)来代替跳格(Tab)

    说明:对于新项目,必须使用纯空格(spaces)来代替跳格(Tab)。
    # 错误示例:新项目使用跳格
    def load_data(dirname, one_hot=False):
    X_train = [] # 跳格
    Y_train = [] # 跳格

    # 正确示例:
    def load_data(dirname, one_hot=False):
    X_train = []
    Y_train = []
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1.2 语句

    1.2.1 Python文件中必须使用UTF-8编码

    说明:Python文件中应该使用UTF-8编码(Python2.x中默认使用ASCII编码, Python3.x默认使用UTF-8编码), 使用ASCII或UTF-8的文件必须有编码声明. 另外使用x转义字符是在字符串中包含非ASCII(non-ASCII)数据的首选方法.
    1.2.2 一行只写一条语句

    说明:不允许把多个短语句写在一行中,即一行只写一条语句。多条语句写在一行,这样做一个很明显得缺点就是在调试的时候无法单步执行。
    # 错误示例:多条语句在一行,不方便单步调试
    rect.length = 0; rect.width = 0;

    # 正确示例:
    rect.length = 0
    rect.width = 0
    1
    2
    3
    4
    5
    6
    1.2.3 相对独立的程序块之间、变量说明之后必须加空行

    说明:相对独立的程序块之间、变量说明之后加上空行,代码可理解性会增强很多。
    # 错误示例:程序块之间未加空行
    if len(deviceName) < _MAX_NAME_LEN:
    ……
    writer = LogWriter()

    # 正确示例:
    if len(deviceName) < _MAX_NAME_LEN:
    ……

    writer = LogWriter()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1.2.4 一行长度小于80个字符,与Python标准库看齐

    说明:建议开发团队用本产品线的门禁工具或者yapf(https://github.com/google/yapf) 自动格式化,或者用IDE自带的格式化功能统一格式化代码后再提交。
    较长的语句、表达式或参数(>80字符)要分成多行书写,首选使用括号(包括{},[],())内的行延续,推荐使用反斜杠()进行断行。长表达式要在低优先级操作符处划分新行,操作符统一放在新行行首或原行行尾,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
    # 错误示例:一行字符太多,阅读代码不方便
    if width == 0 and height == 0 and color == 'red' and emphasis == 'strong' and highlight > 100:
    x = 1

    # 正确示例:
    if (width == 0
    and height == 0
    and color == 'red'
    and emphasis == 'strong'
    and highlight > 100):
    x = 1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1.3 空格

    1.3.1 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符前后要加空格

    说明:采用这种松散方式编写代码的目的是使代码更加清晰。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留一个以上空格。
    1、逗号、分号(假如用到的话)只在后面加空格。

    # 错误示例:
    print(a,b , c)

    # 正确示例:
    print(a, b, c)
    1
    2
    3
    4
    5
    2、比较操作符">"、">="、"<"、"=<"、"==", 赋值操作符"="、"+=",算术操作符"+"、"-"、"%",逻辑操作符and, or等双目操作符的前后加空格。
    错误示例:

    if current_time>= MAX_TIME_VALUE:
    a=b+ c
    a+=2
    1
    2
    3
    正确示例:

    if current_time >= MAX_TIME_VALUE:
    a = b + c
    a += 2
    1
    2
    3
    1.3.2 进行非对等操作时,如果是关系密切的立即操作符(如.)后不应加空格

    1、函数定义语句中的参数默认值,调用函数传递参数时使用的等号,建议不加空格

    def create(self, name=None):
    pass

    self.create(name="mike")
    1
    2
    3
    4
    2、 *、**等作为操作符时,前后不加空格。

    # 错误示例:
    a = b * c
    a = c ** b

    # 正确示例:
    a = b*c
    a = c**b
    1
    2
    3
    4
    5
    6
    7
    3 、.前后不加空格。

    # 错误示例:
    result. writeLog()

    # 正确示例:
    result.writeLog()
    1
    2
    3
    4
    5
    4、括号内侧,左括号后面和右括号前面,不需要加空格,多重括号间不必加空格。

    # 错误示例:
    a = ( (b + c)*d - 5 )*6

    # 正确示例:
    a = ((b + c)*d - 5)*6
    1
    2
    3
    4
    5
    5、紧贴索引切片或被调用函数名,开始的括号前,不需要加空格。

    # 错误示例:
    Dict [key] = list [index]
    conn = Telnet.connect (ipAddress)

    # 正确示例:
    dict[key] = list[index]
    conn = Telnet.connect(ipAddress)
    1
    2
    3
    4
    5
    6
    7
    1.4 导入

    1.4.1 加载模块必须分开每个模块占一行

    说明:单独使用一行来加载模块,让程序依赖变得更清晰。
    # 错误示例:
    import sys, os

    # 正确示例:
    import sys
    import os
    1
    2
    3
    4
    5
    6
    1.4.2 导入部分(imports)置于模块注释和文档字符串之后,模块全局变量和常量声明之前

    说明:导入部分(imports)置于模块注释和文档字符串之后,模块全局变量和常量声明之前。导入(import)库时,按照标准库、第三方关联库、本地特定的库/程序顺序导入,并在这几组导入语句之间增加一个空行。
    # 正确示例:
    import sys
    import os
    from oslo_config import cfg
    from oslo_log import log as logging
    from cinder import context
    1
    2
    3
    4
    5
    6
    1.4.3 避免使用from xxx import *的方式导入某模块的所有成员

    说明:from xxx import *会将其他模块中的所有成员挨个赋值给当前范围的同名变量,如果当前范围已经有同名变量,则会静默将其覆盖。这种方式容易导致名字冲突,且冲突后不容易定位,应当尽量避免使用。
    正确示例: 如果需要使用yyy,则
    from xxx import yyy

    ———————————————

    A thousand journey is started by taking the first step.
  • 相关阅读:
    Appium Inspector定位元素与录制简单脚本
    Appium(Python)API
    Appium(Python)驱动手机Chrome浏览器
    Appium(Python)驱动手机淘宝App
    uiautomatorviewer定位App元素
    Android Studio怎样创建App项目
    adb获取设备的序列号
    获取App的PackageName包名和LauncherActivity启动页
    怎样安装Appium
    最小生成树(MST)
  • 原文地址:https://www.cnblogs.com/chengjian-physique/p/14995368.html
Copyright © 2020-2023  润新知