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

posted @ 2019-12-29 12:33  “人生苦短”  阅读(800)  评论(0编辑  收藏  举报