zoukankan      html  css  js  c++  java
  • python代码PEP8规范示例

    """
    文档字符串 docstring, 是 package, module, class, method, function 级别的注释,可以通过 doc 成员访问到,注释内容在一对双引号
    优先使用英文写注释,英文不好全部写中文,强行使用英文可能导致大家都看不懂
    1.所有 import 尽量放在文件开头,在 docstring 下面,其他变量定义的上面
    2.不要使用 from foo import *
    3.import 需要分组,每组之间一个空行,每个分组内的顺序尽量采用字典序,分组顺序是:
        3.1 标准库
        3.2 第三方库
        3.3 本项目的 package 和 module
    4.不要使用隐式的相对导入(implicit relative imports)
      可以使用显示的相对导入(explicit relative imports),如 from ..utils import parse
      最好使用全路径导入(absolute imports)
    5.同一个 package/module 下的内容可以写一起
    6.为了避免可能出现的命名冲突,可以使用 as 或导入上一级命名空间
    
    """
    import os
    import sys
    import db
    
    from flask import Flask, render_template, jsonify
    from collections import defaultdict as my_dict
    
    # 这是一个正确注释,#后面需要一个空格,如下为特例
    #!/usr/bin/python
    
    # 操作符两端加一个空格,如 +, -, *, /, |, &, =
    a = 1 + 2
    b = 10 - 1
    c = 1 * 2
    d = 10 / 5
    e = 10 | 20
    f = 5 & 6
    
    
    # 在参数列表里的 = 两端不需要空格
    def add(num1=1, num2=2):
        return num1 + num2
    
    
    # function 和 class 顶上两个空行
    class MyClass(object):
        def my_function1(self):
            pass
    
        # class 的 method 之间一个空行
        def my_function2(self):
            # 函数内逻辑无关的段落之间空一行,不要过度使用空行
            # 逻辑1
    
            # 逻辑2
    
            # 逻辑3
    
            return
    
    
    # 不要把多个语句写在一行,然后用 ; 隔开
    add(1, 2)
    add(3, 4)
    
    # 括号((), {}, [])内的两端不需要空格
    tmp = ('name1', 'name2')
    
    # if/for/while 语句中,即使执行语句只有一句,也要另起一行
    if True:
        print('另起一行')
    
    # 每一行代码控制在80字符以内,例子如下:
    # 面对抢票软件的花样,有专家提醒,虽然理论上抢票软件比人工刷新更快,但12306已经屏蔽了许多抢票端口并推出了“官方抢票”
    # 的候补功能——也就是,当没有余票时,12306会在车次列表中出现“候补”的字样。旅客可根据需求选择车次、席别,在成功支付
    # 候补预付款后,如果有匹配需求的车票,系统会自动生成已支付订单,并退回差额;如果没有,系统将全额退还预付款。那么,这个
    # 候补功能和市面上的抢票软件谁更好用?如果用抢票软件,又有哪些套路要小心?
    
    
    # 使用  或 () 控制换行
    def foo(tmp1='aa', tmp2='bb', tmp3='cc', tmp4='dd',
            tmp5='ee', tmp6='ff', tmp7='gg', tmp8='hh'):
        pass
    
    
    # 使用有意义的,英文单词或词组,绝对不要使用汉语拼音
    address = 'suzhou'
    
    # package/module 名中不要出现 -
    
    # 不要轻易使用 try/except,except 后面需要指定捕捉的异常,裸露的 except
    # 会捕捉所有异常,意味着会隐藏潜在的问题
    # 可以有多个 except 语句,捕捉多种异常,分别做异常处理
    age = '111'
    try:
        age = int(age)
    except(TypeError, ValueError):
        render_template()
    
    # 使用 finally 子句来处理一些收尾操作
    try:
        db.session.commit()
    except sqlalchemy.exc.SQLAlchemyError: # 或者更具体的异常
        db.session.rollback()
    finally:
        db.session.close()
    
    
    # 显示的写明父类,如果不是继承自别的类,就继承自 object 类
    # 使用 super 调用父类的方法
    # 支持多继承,即同时有多个父类,建议使用 Mixin
    class MyClass(object):
        pass
    

      

    参考文档:https://zhuanlan.zhihu.com/p/33705005

  • 相关阅读:
    locate和grep命令
    内存管理(30天自制操作系统--读书笔记)
    单字节的FIFO缓存(30天自制操作系统--读书笔记)
    STM32 DMA中断只进入一次的解决办法
    Linux Linker
    Linux Linker Script
    java学习-- equals和hashCode的关系
    java学习--"==”和 equals
    java学习--equals
    POI richText和html的转换案例
  • 原文地址:https://www.cnblogs.com/hester/p/12114668.html
Copyright © 2011-2022 走看看