编辑推荐:

本文给大家python的代码格式,编码,import语句,注释,文档注释及命名规范,希望对大家有帮助。

本文来自于简书,由火龙果软件Delores编辑,推荐。

一,简明概述

1.编码

如无特殊情况,文件一律使用utf-8编码

如无特殊情况,文件头部必须加入# -*-coding:utf-8-*-

2.代码格式

2.1.缩进

统一使用4个空格进行缩进

2.2.行宽

每行代码最好不要超过80个字符(在特殊情况下可以超过80个,但最好不要超过120个)

理由:

这在查看 side-by-side 的 diff 时很有帮助

方便在控制台下查看代码

太长可能是设计缺陷

2.3.引号

简单的说,自然语言使用双引号,机器语言使用单引号,因此在代码里多数应该使用单引号

自然语言使用双引号"..."

例如错误信息,很多时候还是unicode,使用u"你好,世界"

机器标识使用单引号'...'

例如字典里的key

正则表达式使用原生的双引号r"..."

文档字符串(docstring)使用三个双引号"""..."""

2.4. 空行

模块级函数和类之间空两行

类成员函数之间空一行

class A:

def __init__(self): # 类成员函数

pass

def hello(self): # 类成员函数

pass

vdef main(): # 模块级函数

pass

可以使用多个空行分割多组相关的函数

函数中使用空行分割出逻辑相关的代码

2.5.编码

文件使用utf-8编码

文件头部键入# -*-coding:utf-8-*-标识

3.import语句

import语句应该分行书写

# 正确的写法

import os

import sys

# 不推荐的写法

import os,sys

# 正确的写法

from subprocess

import Popne, PIPE

import语句应该使用absolute import

# 正确的写法

from foo.bar import Bar

# 不推荐的写法

from ..bar import Bar

import 语句应该放在文件头部,置于模块说明及docstring之后,与全局变量之前

import语句应该按照顺序排序,每组之间用一个空行分割

import os

import sys

import lxml

import bs4

import requests

导入其他模块的类定义时,可以使用相对导入

from myclass

import Myclass

如果发生命名冲突,则可以使用命名空间

import bar

import foo.bar

bar.get()

foo.bar.get()

4.空格

在二元操作符两边各空一格[=,-,+=,-=,==,is not,and,in]

# 正确的写法

i = i + 1

y += 1

z = x * x + y * y

c = (a + b) + (a - b)

# 不推荐的写法

i=i+1

y+=1

z=x*x+y*y

c=(a+b)+(a-b)

函数的参数列表中,,之后加空格

# 正确的写法

def foo(var1, var2):

pass

# 不推荐的写法

def bar(var1,var2):

pass

函数的参数列表中,默认值等号两边不要加空格

# 正确的写法

def foo(var1, var2=1):

pass

# 不推荐的写法

def bar(var1, var2 = 1):

pass

左括号之后,右括号之前不要加多余的空格

# 正确的写法

def foo(var1, var2):

pass

# 不推荐的写法

def bar( var1, var2 ):

pass

字典对象的左括号之前不要添加多余的空格

# 正确的写法

dict1['key'] = 1

# 不推荐的写法

dict1 ['key'] = 1

不要为对齐赋值语句而使用额外的空格

# 正确的写法

x = 1

y = 2

long_variable = 3

# 不推荐的写法

x = 1

y = 2

long_variable = 3

5.换行

python支持括号内的换行,这时有2种情况

1.第二行缩进到括号的起始处

foo = long_function_name

(var1,

var2

var3, var4)

2.第二行缩进4个空格,适用于起始括号就换行的情况

def long_function_name(

var1, var2

var3, var4):

print(var1)

使用反斜杠\换行,二元运算符+ .等应该出现在行末;长字符串也应该用此法换行

session.query(MyTable).\

filter_by(id=1).\

one()

print 'Hello, '\

'%s %s!' %\

('Harry', 'Potter')

禁止复合语句;即一行中包含多个语句

#正确的写法

do_first()

do_second()

do_third()

#不推荐的写法

do_first();do_second();do_third();

if/for/while一定要换行:

#正确的写法

if foo == 'blash':

do_something()

#不推荐的写法

if foo == 'blash':do_something()

6.docstring

docstring中最规范的2点:

1.所有的公共模块,类,函数,方法。私有方法不一定需要,但应该在def后提供一个块注释来说明

1.docstring的结束符'''应该独占一行,除非这个doctring只占一行

"""Return

a foobar

Optional plotz says to

frobnicate the bizbaz first.

"""

"""Oneline docstring"""

二,注释

1.注释

1.1.块注释

“#”号后空一格,段落件用空行分开(同样需要“#”号)

# 块注释

# 块注释

#

# 块注释

# 块注释

1.2.行注释

至少使用两个空格和语句分开,注意不要使用无意义的注释

# 正确的写法

x = x + 1 # 边框加粗一个像素

# 不推荐的写法(无意义的注释)

x = x + 1 # x加1

1.3.建议

在代码的关键部分(或比较复杂的地方), 能写注释的要尽量写注释

比较重要的注释段, 使用多个等号隔开, 可以更加醒目, 突出重要性

app = create_app(name,

options)

# ============================

# 请勿在此处添加 get post

等app路由行为 !!!

# ============================

if __name__ == '__main__':

app.run()

2.文档注释(Docstring)

作为文档的Docstring一般出现在模块头部、函数和类的头部,这样在python中可以通过对象的doc对象获取文档.

编辑器和IDE也可以根据Docstring给出自动提示.

文档注释以 """ 开头和结尾, 首行不换行, 如有多行, 末行必需换行, 以下是Google的docstring风格示例

# -*- coding:

utf-8 -*-

"""Example docstrings.

This module demonstrates

documentation as specified

by the `Google Python

Style Guide`_. Docstrings may

extend over multiple

lines.

Sections are created

with a section header and a

colon followed by

a block of

indented text.

Example:

Examples can be given using

either the ``Example``

or ``Examples``

sections. Sections support

any reStructuredText

formatting,

including

literal blocks::

$ python example_google.py

Section breaks are created by

resuming unindented

text.

Section breaks

are also implicitly created anytime

a new section

starts.

"""

不要在文档注释复制函数定义原型, 而是具体描述其具体内容, 解释具体参数和返回值等

# 不推荐的写法(不要写函数原型等废话)

def function(a, b):

"""function(a,

b) -> list"""

... ...

# 正确的写法

def function(a, b):

"""计算并返回a到b范围内数据的平均值"""

... ...

对函数参数、返回值等的说明采用numpy标准, 如下所示

def func(arg1,

arg2):

"""在这里写函数的一句话总结

(如: 计算平均值).

这里是具体描述.

参数

----------

arg1 : int

arg1的具体描述

arg2 : int

arg2的具体描述

返回值

-------

int

返回值的具体描述

参看

--------

otherfunc : 其它关联函数等...

示例

--------

示例使用doctest格式, 在`>>>`后的

代码可以被文档测试工具作为

测试用例自动运行

>>> a=[1,2,3]

>>> print [x + 3 for x in a]

[4, 5, 6]

"""

文档注释不限于中英文, 但不要中英文混用

文档注释不是越长越好, 通常一两句话能把情况说清楚即可

模块、公有类、公有方法, 能写文档注释的, 应该尽量写文档注释

3.命名规范

1.模块

模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)

# 正确的模块名

import decoder

import html_parser

# 不推荐的模块名

import Decoder

2.类名

类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头

class Farm():

pass

class AnimalFarm(Farm):

pass

class _PrivateFarm(Farm):

pass

将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.

3.函数

函数名一律小写,如有多个单词,用下划线隔开

def run():

pass

def run_with_env():

pass

私有函数在函数前加一个下划线_

class Person():

def _private_func():

pass

4.变量名

变量名尽量小写, 如有多个单词,用下划线隔开

if __name__

== '__main__':

count = 0

school_name = ''

常量采用全大写,如有多个单词,使用下划线隔开

MAX_CLIENT =

100

MAX_CONNECTION = 1000

CONNECTION_TIMEOUT = 600

5.常量

常量使用以下划线分隔的大写命名

MAX_OVERFLOW

= 100

Class FooBar:

def foo_bar(self, print_):

print(print_)

python代码规范软件_python代码规范相关推荐

  1. 代码编写软件,代码编写软件推荐。

    代码编写软件,代码编写软件是一种计算机程序,它的主要功能是为程序员提供编写.测试和维护计算机代码的工具,它们通常具有编辑器.编译器.调试器和其他辅助工具,使程序员能够更加高效地编写代码,那么很多小伙伴 ...

  2. python 代码格式规范脚本_Python编码规范

    Python自动化测试代码编码规范 一.适用范围: 本规则基础为Python标准PEP8,在此基础上加了我司测试部编码规范,适用于测试部所有Python脚本编写是采用的规则. 二.编码: 所有的 Py ...

  3. python代码质量检查工具_python代码检查工具pylint 让你的python更规范

    复制代码 代码如下: #coding:utf-8 ''' a test function module ''' import urllib import time def fetch(url): '' ...

  4. 百万年薪python之路 -- 软件的开发规范

    一. 软件的开发规范 什么是开发规范?为什么要有开发规范呢? 你现在包括之前写的一些程序,所谓的'项目',都是在一个py文件下完成的,代码量撑死也就几百行,你认为没问题,挺好.但是真正的后端开发的项目 ...

  5. python代码重构技巧_Python代码重构

    代码重构是一件很是辛苦却很是有意义的事情,代码重构的缘由在于:django 一.代码过于冗余.沉余架构 二.代码过于耦合函数 三.代码过于复杂学习 四.接口调用超出三层优化 此次重构主要在于架构问题, ...

  6. python的合法名称_python 命名规范

    转载一下其中的命名规范: 命名 module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLO ...

  7. python控制其它软件_python——实现ERP软件自动化操作

    软件部分.png 数据部分.png erp软件操作是个繁琐至极的工作,也许能带来整体数据的优化,但操作十分死板和无聊,通过python中pyautogui和pyopenxl两个包,可以将操作部分实现自 ...

  8. python编程入门软件_python编程入门

    python编程是一款技术专业的编程入门学习App,着眼于协助新手入门及提高程序猿开发高效率,现阶段已提供1000 普遍编程语言实例教程和完全免费技术资料,包含前端开发开发/Python/Java/P ...

  9. python操作画图软件_Python绘图工具matplotlib的使用(图形并茂)

    matplotlib官网文档: 支持win7_64_bit的matplotlib库下载网址: 简单介绍: matplotlib 是python最著名的画图库,它提供了一整套和matlab类似的命令AP ...

  10. python 文件处理软件_Python——文件处理

    1.文件 存储在外部介质上的数据或信息的集合 .程序中的源程序.数据中保存着数据.图像中的像素数据 有序的数据序列. 2.编码 信息从一种形式转换为另一种形式的过程.ASCII码.Unicode.UT ...

最新文章

  1. python中bin是什么意思_Python之一、#!/usr/bin/python到底是什么意思
  2. CV之FE:基于TF进行FE——去除异常(被损坏)图像 和单通道图像
  3. cat /proc/meminfo 各字段详解
  4. int (*p)[4] 与 int* p[4]
  5. Angular bootstrap的一个例子
  6. [你必须知道的.NET]第十七回:貌合神离:覆写和重载
  7. linux 进程 状态 ri,LINUX下解决netstat查看TIME_WAIT状态过多问题(转)
  8. Linux简介,虚拟机,远程操作工具安装及基本使用
  9. 手把手教你智能硬件开发(一) 我选Arduino
  10. 将文件转换成json
  11. 企业微信会话存档功能的推出背景,版本,部署方式
  12. 解决电脑网络图标消失,电脑连接不上网络的问题总结。
  13. 9017R单节锂电池线性充电管理 IC
  14. mandatory标志的作用
  15. python传递指针_python值传递和指针传递
  16. java自动化测试语言高级之泛型
  17. uboot中利用TFTP和NFS加载镜像到ram运行
  18. 【移动机器人技术】move_base中障碍物无法清除的解决办法
  19. 【域泛化综述-2022 TPAMI】Domain Generalization: A Survey
  20. S60手机真机调试心得

热门文章

  1. LoggerFactory.getLogger
  2. 关闭迅雷首页播放视频的方法
  3. 【Alpha】Scrum Meeting 10
  4. P2463 [SDOI2008]Sandy的卡片
  5. Dubbo分析之Registry层
  6. Thinkphp结合phpqrcode生成二维码海报代码
  7. .net reactor 学习系列(四)---.net reactor应用场景
  8. PSVR透露下一步计划,不做内容改做声控
  9. Gradle之全局配置
  10. 循环赛日常表算法(N可为奇数和偶数)