Code前端首页关于Code前端联系我们

适用于Python和Django的编码标准:干净得像个美丽的女孩!

terry 2年前 (2023-09-24) 阅读数 53 #后端开发

Python与Django均适用的编码规范:整洁如同美少女!

缩进

  • 均匀使用4个空格进行缩进

行宽

每行代码尽量不要超过80个字符(特殊情况可以稍微超过80个,但最长不能超过120个)

原因 :

  • 这对于查看side与side之间的差异很有用
  • 方便在控制台下显示代码
  • 标签太长可能是设计错误 ‷o 简单的说,自然语言使用双引号和机器标记使用单引号,因此大多数代码中都应使用单引号
      • 自然语言使用双引号“...”,如错误消息;很多情况下还是unicode,使用 u"Hello world"
      • 机器识别使用单引号 '...' 例如字典
      • 正则表达式中的 key 使用原生双引号 r"..."
      • 字符串文档字符串使用三个双引号“”“......”“”

    空行

    • 模块级函数和类定义之间有两个空行;
    • 类成员函数之间有一个空行;
    class A:def __init__(self):passdef hello(self):passdef main():pass
    • 可以使用多个空行来分隔多组相关的函数
    • 可以在函数中使用空行来分隔逻辑相关的代码

    编码

    • 文件使用UTF-8编码
    • 在函数中添加标识#--conding:utf-8--头文件(Python 3或更高版本不需要)

    导入命令

    • 导入命令应分行书写
    #正确的写法 import osimport sys#不推荐的写法 import sys,os#正确的写法from subprocess import Popen, PIPE
    • 导入命令应该使用绝对导入
    1. #正确的写法
    2. from foo. bar import Bar
    3. #写法
    4. z ..bar import Bar
    • 导入命令应放在文件开头,模块描述和文档字符串之后,全局变量之前;
    • 导入列表 按顺序排列,每组之间用空行分隔
    1. import os
    2. import sys
    3. import msgpackqimport zmport zm 导入其他模块定义类时可以使用相对导入
  • 如果存在命名冲突,可以使用命名空间
import barimport foo.barbar.Bar()foo.bar.Bar()

空格

空格 二进制运算符两边各留一个空格 [=,-,+=,==,>,in,is not a]:# 正确写法 i = i + 1subscribed += 1x = x * 2 - 1hypot2 = x * x + y * yc = (a + b) * (a - b)#不建议写 i=i+1subscribed +=1x = x*2 - 1hypot2 = x*x + y*yc = (a+b) * (a-b ) 函数

的参数列表中后面必须有一个空格,#正确写法 def complex(real, imag): pass#不建议写 def complex(real, imag ): pass 函数的参数列表中

是默认的 equal = ,两边不加空格。 # 正确的写法 def complex(real, imag=0.0):pass# 不推荐的写法 def complex(real, imag = 0.0):pass

不要在左括号后面和右括号前面添加多余的空格# 正确的写法 spam(ham[1], {eggs: 2})# 不推荐的写法 spam(ham[1], {eggs: 2})

字典对象左括号前不能有多余的空格# 正确的写法 dict['key'] = list[index]# 不推荐的写法 dict['key'] = list [index]

不要使用多余的空格来对齐输入命令#正确的写法 x = 1y = 2long_variable = 3# 不建议写成 x = 1y = 2long_variable = 3

换行符

Python 支持括号内换行符。此时有两种情况。

1。第二行在括号开头缩进 foo = long_function_name(var_one, var_dwo,var_third, var_four)

2。第二行缩进4个空格,方便括号开头换行 Case def long_function_name(var_one, var_dwo, var_third, var_four):print(var_one)

3。使用反斜杠\换行符、二元运算符+。等等应该出现在行尾;长字符串也可以使用此方法打破行session.query(MyTable).\         filter_by(id=1).\       one()print 'Hello, '\  '%s %s!' %\ (“哈利”、“波特”)

4。禁止复合命令,即一行多个命令: # 正确写法 do_first() do_second() do_third()# 不建议写 do_first();do_second();do_third();

if / for/ while 必须换行: # 正确写法 if foo == 'blah': do_blah_thing() # 不建议写法 if foo == 'blah': do_blash_thing()

Comment

block Comment ❙⸸字符“#”后留一个空格并用空行分隔段落(也需要“#”) # 块注释 # 块注释 ## 块注释 # 块注释

行注释

至少使用两个空格和语句分隔,小心,别用废话注释 # 正确写法 x = x + 1 # 边框高亮一像素 # 不建议这么写(废话注释) x = x + 1 # x 加 1

docstring

文档字符串规范在 PEP 257 中有详细说明。两个最基本的点是:

  • 所有公共模块、函数、类和方法都应该在其中编写文档字符串。私有方法并不是绝对必要的,但应该通过注释掉 def 之后的块来解释。
  • 文档字符串 """ 的末尾应位于单独的一行上,除非文档字符串只有一行。
"""返回 foobar 可选的plotz 表示首先冻结 bizbaz。"""""""文档字符串 """

命名约定

  • 应避免使用小写 l (L) 和大写 O (o)或I(i)单独作为变量名来区分数字1和0;
  • 包和模块全部使用小写字母,尽量不要使用下划线
  • 类名使用驼峰命名风格,内部类可以使用驼峰命名风格。以下划线开头的函数
  • 使用小写字母,下划线分隔 当参数名称与 Python 保留字冲突时,可以在末尾添加下划线,而不是使用缩写或自造词
  • 常量使用大写字母,以下划线分隔下划线命名
MAX_OVERFLOW = 100Classdef FooBobar self, print_):print(print_)

作者:raydang

链接:https://www.jianshu.com/p/c7455c178059
来源:简单书

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门