• PEP8 常用规范


    PEP8 常用规范

    完整的规范移步这里两个传送门

    pep8规范 官方文档:https://www.python.org/dev/peps/pep-0008/

     

    个人使用中常用的规范

    一、代码编排

    1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。

    2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。

    3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。

    二、文档编排

    1 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # @Time    : 2018/05/17 10:46
     4 # @Author  : MJay_Lee
     5 # @File    : tcp_server.py
     6 # @Contact : limengjiejj@hotmail.com
     7 
     8 import os
     9 import sys
    10 
    11 from tcp_server import online_user
    12 from threading import currentThread
    13 from lib import common
    14 
    15 from interface import common_interface, admin_interface, user_interface
    16 
    17 conn_pool = ThreadPoolExecutor(10)
    18 # 互斥锁为了限制多个线程同时登录一个ID时进行写操作带来的误区
    19 mutex = Lock()
    20 # 之所以把mutex放在online_user.py文件中,是因为避免文件的交叉引用
    21 online_user.mutex = mutex
    22 
    23 def foo1
    24 
    25 
    26 def foo2
    复制代码
    2 不要在一句import中多个库,比如import os, sys不推荐。
    # 正确方式
    import os
    import sys
    from subprocess import Popen, PIPE
    # 错误方式
    import os,sys
    3 如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。
    from myclass import MyClass
    from foo.bar.yourclass import YourClass
    

    # 如果和本地名字有冲突:
    import myclass
    import foo.bar.yourclass

    三、空行的使用

    总体原则,避免不必要的空格。

    1 各种右括号前不要加空格。
    2 逗号、冒号、分号不要加空格。
    3 函数的左括号不要加空格。如Func(1)。
    4 序列的左括号不要加空格。如list[2]。
    5 操作符左右各加一个空格,不要为了对齐增加空格。
    6 函数默认参数使用的赋值符左右省略空格
    7 不要将多句语句写在同一行,尽管使用‘;’允许。
    8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。

    四、注释

    总体原则,英文,简明。

    • 与代码自相矛盾的注释比没注释更差。修改代码时要优先更新注释
    • 注释是完整的句子。如果注释是断句,首字母应该大写,除非它是小写字母开头的标识符(永远不要修改标识符的大小写)。
    • 如果注释很短,可以省略末尾的句号。注释块通常由一个或多个段落组成。段落由完整的句子构成且每个句子应该以点号(后面要有两个空格)结束,并注意断词和空格。
    • 非英语国家的程序员请用英语书写你的注释,除非你120%确信代码永远不会被不懂你的语言的人阅读。
    • 注释块通常应用在代码前,并和这些代码有同样的缩进。每行以 '# '(除非它是注释内的缩进文本,注意#后面有空格)。注释块内的段落用仅包含单个 '#' 的行分割。
    • 慎用行内注释(Inline Comments) 节俭使用行内注释。 行内注释是和语句在同一行,至少用两个空格和语句分开。行内注释不是必需的,重复罗嗦会使人分心。不要这样做:
    • # 正确写法
      x = x + 1 # Compensate for border
      # 错误写法
      x = x + 1 # do nothing

    五、命名

    总体原则,新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。

    • b(单个小写字母)
    • B(单个大写字母)
    • lowercase(小写串)
    • lower_case_with_underscores(带下划线的小写)
    • UPPERCASE(大写串)
    • UPPER_CASE_WITH_UNDERSCORES(带下划线的大写串)
    • CapitalizedWords(首字母大写的单词串或驼峰缩写)
    • 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。
      注意: 使用大写缩写时,缩写使用大写字母更好。故 HTTPServerError 比 HttpServerError 更好
    • mixedCase(混合大小写,第一个单词是小写)
    • Capitalized_Words_With_Underscores(带下划线,首字母大写,丑陋)

    六 、编码建议

    1 编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。
    2 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。
    3 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。
    4 异常中不要使用裸露的except,except后跟具体的exceptions。
    5 异常中try的代码尽可能少。比如:

    复制代码
    try:
        value = collection[key]
    except KeyError:
        return key_not_found(key)
    else:
        return handle_value(value)
    要优于
    try:
        return handle_value(collection[key])
    except KeyError:
    # Will also catch KeyError raised by handle_value()
        return key_not_found(key)
    复制代码
    6 使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如:
    Yes: if foo.startswith('bar'):优于
    No: if foo[:3] == 'bar':
    7 使用isinstance()比较对象的类型。比如
    Yes: if isinstance(obj, int): 优于
    No: if type(obj) is type(1):

    8 判断序列空或不空,有如下规则
    Yes: if not seq:
    if seq:
    优于
    No: if len(seq)
    if not len(seq)
    9 字符串不要以空格收尾。
    10 二进制数据判断使用 if boolvalue的方式。
     
    (完)
  • 相关阅读:
    Django(app的概念、ORM介绍及编码错误问题)
    Django(完整的登录示例、render字符串替换和redirect跳转)
    Construct Binary Tree from Preorder and Inorder Traversal
    Single Number II
    Single Number
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Binary Tree Zigzag Level Order Traversal
    Recover Binary Search Tree
    Add Binary
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/13296364.html
Copyright © 2020-2023  润新知