PEP8编码规范,及开发中的一些惯例和建议

为什么要有编码规范

  规范的代码给人的第一感觉是【美观】,美的东西总是更加的吸引人,也愿意观看。乱糟糟得是不是会让人不由自主地想飙脏话。所以美观进而带来的是代码的【可读性】强,想一想你写的代码可读性非常高,是不是维护起来也更加容易,所以可读性强带来的是代码的【可维护性】强,最终你的代码【健壮性】高,不容易出BUG,出了也容易解决。

错误的代码编写示例

 1 from django.conf import settings
 2 from user.models import *
 3 import sys, os
 4 mod=0xffffffff
 5 def foo  ( a , b = 123 ):
 6     c={ ‘x‘ : 111 , ‘y‘ : 222 }#定义一个字典
 7     d=[ 1 , 3,5 ]
 8     return a,b , c
 9 def bar(x):
10     if x%2==0 : return True

正确的代码编写

 1 import sys
 2 import os
 3
 4 from django.conf import settings
 5
 6 from user.models import User
 7
 8 MOD=0xffffffff
 9
10
11 def foo(a, b=123):
12     c={‘x‘: 111,‘y‘: 222} #定义一个字典
13     d=[1, 3, 5]
14     return a, b, c
15
16
17 def bar(x):
18     if x % 2 == 0:
19         return True
  • 代码编排

    • 缩进4个空格,禁止空格与Tab混用
    • 行长80字符,防止单行逻辑过于复杂import
    • 不要使用 from xxx import * 这种语法
      • 文件 xyz.py
      • __all__ = (‘a‘, ‘e‘, ‘_d‘)   # 包含在这里面的能被import到其他模块里面使用
        
        a = 123
        _b = 456
        c = ‘asdfghjkl‘
        _d = [1,2,3,4,5,6]
        e = (9,8,7,6,5,4)
      • 文件 abc.py
      • from xyz import *          # 用这种语法导入的时候,除了__all__中的变量,带下划线的是导入不进来的。   
        print(a)
        print(_b)
        print(c)
        print(_d)
        print(e) 
    • 顺序单行不要 import 多个库

      • 标准库
      • 第三方库
      • 自定义库
    • 模块内用不到的不要去 import        
  • 空格

    • 问号和逗号后面跟一个空格,前面无空格。
    • 二元操作符前后各一个空格,包括以下几类:
      • 数学运算符      + - * / // = & |
      • 比较运算符      == != > < >= <= is not in
      • 逻辑运算符      and or not
      • 位运算符         & | ^ << >>
    • 当=用于只是关键字参数或默认参数值时,不要在其两侧使用空格
  • 适当添加空行
    • 函数间:顶级函数间空2行,类的方法之间空1行
    • 函数内:同一函数内逻辑块之间,空一行
    • 文件结尾:留一个空行 
  • 注释
    • 两点需要避免:①逐行添加注释②没有一个注释
    • 行尾注释:单行逻辑过于复杂时添加
    • 块注释:一段逻辑开始时添加
    • 引入外来算法或者配置时须在注释中添加源连接,标明出处
    • 函数、类、模块尽可能添加docstring
  • 命名
    • 好的变量名 要能做到"词能达意"
    • 除非在lambda函数中,否则不要使用单字母的变量名(即使是lambda函数中的变量名也要尽可能的有意义)
    • 包名、模块名、函数名、方法、普通变量名全部使用小写, 单词间用下划线连接
    • 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加 ErrorWraning 后缀
    • 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
    • 函数名必须有动词, 最好是 do_something 的句式, 或者 somebody_do_something 句式
  • 语意明确、直白

    • not xx in yy   VS   xx not in yy
    • not a is b     VS   a is not b

程序的构建

    • 函数是模块化思想的体现
    • 独立的逻辑应该抽离成独立函数,让代码结构更清晰,可复用度更高
    • 一个函数只做一件事情, 并把这件事做好
    • 大的功能用小函数之间灵活组合来完成
    • 避免编写庞大的程序, “大” 意味着体积庞大, 逻辑复杂甚至混乱
  • 自定义的变量名、函数名不要与标准库中的名字冲突

原文地址:https://www.cnblogs.com/reklen/p/9513764.html

时间: 2024-10-08 23:17:51

PEP8编码规范,及开发中的一些惯例和建议的相关文章

Python PEP8 编码规范中文版-译自官网文件

写在前面(自补):初听PEP8一头雾水,不知所谓.啥是PEP8?为啥叫PEP8?PEP8是干啥的?-先了解下PEP吧. PEP是什么? PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻译是Python增强提案或Python改进建议书. 我个人倾向于前一个翻译,因为它更贴切.Python核心开发者主要通过邮件列表讨论问题.提议.计划等,PEP通常是汇总了多方信息,经过

[python]pep8编码规范

一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类和top-level函数定义之间空两行:类中的方法定义之间空一行:函数内逻辑无关段落之间空一行:其他地方尽量不要再空行. 二 文档编排1 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义.其中import部分,又按标准.三方和自己编写顺序依次排

Python pep8 编码规范

pep8规范 官方文档:https://www.python.org/dev/peps/pep-0008/ PEP8中文翻译:http://www.cnblogs.com/ajianbeyourself/p/4377933.html 以下内容转自 https://www.douban.com/note/134971609/ PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用

php编码问题:PHP开发中的中文编码问??PHP教程 Web开??疯狂代码

From: PHPChina 一:首先介绍问题起源每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII码, 中国的 GB2312-80,日本的 JIS 等,作为该国家/区域内信息处理的基础,有着统一编码的重要作用.字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类.早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG, Codepage 等概念.但是由于各个本地字符集代

(转)Python PEP8 编码规范中文版

转:https://blog.csdn.net/ratsniper/article/details/78954852 原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style Guide for Python Code Version c451868df657 Last-Modified 2016-06-08 10:43:53 -0400 (Wed, 08 Jun 2016) Author Gui

Python PEP8 编码规范 表达式和语句中的空格

不能忍受的事情 在下列情况下,避免使用无关的空格: 紧跟在小括号,中括号或者大括号后. Yes: spam(ham[1], {eggs: 2}) No: spam( ham[ 1 ], { eggs: 2 } ) 紧贴在逗号.分号或者冒号之前. Yes: if x == 4: print x, y; x, y = y, x No: if x == 4 : print x , y ; x , y = y , x 然而,冒号在切片中就像二元运算符,在两边应该有相同数量的空格(把它当做优先级最低的操作

Python PEP8 编码规范中文版

原文链接:https://legacy.python.org/dev/peps/pep-0008/ 参考:https://blog.csdn.net/ratsniper/article/details/78954852 Code lay-out 代码布局 Indentation 缩进    Tabs or Spaces 制表符还是空格    Maximum Line Length 行的最大长度    Should a line break before or after a binary ope

PEP8编码规范

1 缩进与换行 每级缩进使用四个空格 2 限制每行的最大长度为79个字符 3 空行 顶层函数和类之间使用两个空行 类的方法之间用一个空行 在函数中使用空行表示不同逻辑段落 4 导入位于文件的顶部 5 避免多余空格 6 注释 注释要保持与时俱进 一句后面两个空格 跟注释 7 命名规范 除了正常的命名规范外 不要使用 大小写的L 大写的O 作为变量名 类名首字母大写 内部类 加上前导下划线 函数名应该小写 增强可读性可以使用下划线分割 8 其他 别用 '==' 进行布尔值 和 True 或者 Fal

Python 常用 PEP8 编码规范和建议

代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: # (垂直隐式缩进)对准左括号 foo = long_function_name(var_one, var_two, var_three, var_four) # (悬挂缩进) 一般情况只需多一层缩进 foo = long_function_name( var_one, var_two, var_three, var_four) # (悬挂缩进) 但下面情况, 需再加多一层缩进, 和后续的语句块区分开