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

  • 相关阅读:
    linux下启动和关闭网卡命令及DHCP上网
    python 编码问题
    paddlepaddle
    Convolutional Neural Network Architectures for Matching Natural Language Sentences
    deep learning RNN
    Learning Structured Representation for Text Classification via Reinforcement Learning 学习笔记
    Python IO密集型任务、计算密集型任务,以及多线程、多进程
    EM 算法最好的解释
    tensorflow 调参过程
    tensorflow 学习纪录(持续更新)
  • 原文地址:https://www.cnblogs.com/hester/p/12114668.html
Copyright © 2011-2022 走看看