python 开发规范 预览版

python 开发规范 预览版

本文主要参考 pep8和jumpserver开发规范,结合实际,进行修改,欢迎提出修改意见。

代码检查工具

  • pylint
  • pycharm --> code --> Reformat Code 格式化当前文件代码格式
  • pycharm --> 右击项目 --> Inspect Code 根据pep8格式检查当前项目

基本的代码布局

导入

import x
from x import y
from x import y as z

禁止import  x,y

异常

使用 as

try:
    raise Error
except Error as error:
    pass

缩进

1. Python 严格采用4个空格的缩进,任何 Python 代码都都必须遵守此规定。
2. 字符,    后面空一个格

最大行长度

限制最大120个字符。

长语句缩进

编写长语句时,可以使用换行符""换行。在这种情况下,下一行应该与上一行的最后一个“.”句点或“=”对齐,或者是缩进4个空格符。

this_is_a_very_long(function_call, ‘with many parameters‘)     .that_returns_an_object_with_an_attribute

MyModel.query.filter(MyModel.scalar > 120)              .order_by(MyModel.name.desc())              .limit(10)

如果你使用括号“()”或花括号“{}”为长语句换行,那么下一行应与括号或花括号对齐:

this_is_a_very_long(function_call, ‘with many parameters‘,
                    23, 42, ‘and even more‘)

对于元素众多的列表或元组,在第一个“[”或“(”之后马上换行:

items = [
    ‘this is the first‘, ‘set of items‘, ‘with more items‘,
    ‘to come in this line‘, ‘like this‘
]

空行

顶层函数与类之间空两行,此外都只空一行。不要在代码中使用太多的空行来区分不同的逻辑模块。

def hello(name):
    print(‘Hello %s!‘ % name)

class MyClass(object):
    """This is a simple docstring."""

    def __init__(self, name):
        self.name = name

    def get_annoying_name(self):
        return self.name.upper() + ‘!!!!111‘

空格规则

单目运算符与运算对象之间不空格(例如,-,~等),即使单目运算符位于括号内部也一样。
双目运算符与运算对象之间要空格

exp = -1.05
value = (item_value / item_count) * offset / exp
value = my_list[index]
value = my_dict[‘key‘]

字符格式化

使用 f‘{name}{value}‘

比较

  • 任意类型之间的比较,使用“isinstance(L, list)”和“not isinstance(L, list)”
  • 与单例(singletons)进行比较时,使用 is 和 is not。
  • 永远不要与True或False进行比较(例如,不要这样写:foo == False,而应该这样写:if not foo)。
  • 否定成员关系检查, 使用 foo not in bar,而不是 not foo in bar。

命名约定

  • 类名称:采用骆驼拼写法(CamelCase。
  • 变量名:小写_以及_下划线(lowercase_with_underscores)。
  • 方法与函数名:小写_以及_下划线(lowercase_with_underscores)。
  • 常量:大写_以及_下划线(UPPERCASE_WITH_UNDERSCORES)。
  • 预编译的正则表达式:name_re。
  • 受保护的元素以一个下划线为前缀。双下划线前缀只有定义混入类(mixin classes)时才使用。
  • 如果使用关键词(keywords)作为类名称,应在名称后添加后置下划线(trailing underscore)。 允许与内建变量重名,不要在变量名后添加下划线进行区分。如果函数需要访问重名的内建变量,请将内建变量重新绑定为其他名称。
  • 命名要有寓意, 不使用拼音,不使用无意义简单字母命名 (循环中计数例外 for i in)
  • 命名缩写要谨慎, 尽量是大家认可的缩写
  • 尽量 避免使用全局变量, 用类变量来代替

函数和方法的参数:

  • 类方法:cls 为第一个参数。
  • 实例方法:self 为第一个参数。
  • property函数中使用匿名函数(lambdas)时,匿名函数的第一个参数可以用 x 替代, 例如:display_name = property(lambda x: x.real_name or x.username)。
  • 禁止参数里面 直接写 字符id,用其他替代,例如 asset_id

文档注释(Docstring,即各方法,类的说明文档注释)

所有文档字符串均以 reStructuredText 格式编写,方便 Sphinx 处理。文档字符串的行数不同,布局也不一样。 如果只有一行,代表字符串结束的三个引号与代表字符串开始的三个引号在同一行。 如果为多行,文档字符串中的文本紧接着代表字符串开始的三个引号编写,代表字符串结束的三个引号则自己独立成一行。 (有能力尽可能用英文, 否则请中文优雅注释)


def foo():
    """This is a simple docstring."""

def bar():
    """This is a longer docstring with so much information in there
    that it spans three lines.  In this case, the closing triple quote
    is on its own line.
    """

文档字符串应分成简短摘要(尽量一行)和详细介绍。如果必要的话,摘要与详细介绍之间空一行。

注释(Comment)类 函数 注释

def AvailableZones(self, instance_charge_type, region_id):
    """
    功能: 可用区
    :param instance_charge_type: 计费方式
    :param region_id:    地域
    :return:  [‘cn-huhehaote-a‘, ‘cn-huhehaote-b‘]
    """

模块头部

模块文件的头部包含有 utf-8 编码声明(如果模块中使用了非 ASCII 编码的字符,建议进行声明),以及标准的文档字符串。

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-

参考:http://docs.jumpserver.org/zh/docs/python_style_guide.html

原文地址:http://blog.51cto.com/hequan/2286537

时间: 2024-11-05 17:27:25

python 开发规范 预览版的相关文章

Brackets 1.8 预览版,Web 前端开发 IDE

Brackets 1.8 预览版发布了,Brackets 是 Adobe 的开源 HTML/CSS/JavaScript 集成开发环境(入门教程qkxue.net).Brackets 当前为Mac, Windows以及Linux (Debian/Ubuntu)提供最新稳定版的二进制发布(腾云科技ty300.com), 源代码托管在GitHub上. 暂未发行更新内容,点此查看项目提交记录. 发行说明及下载地址: https://github.com/adobe/brackets/releases

Visual Studio 2015 预览版 - 支持跨平台开发Android/iOS应用程序(内置安卓模拟器)

微软最近的惊人举动真多,对普通消费者Office 移动版宣布免费,对开发者也发布了完全免费的 VS2013 社区版! 不仅如此,就连 .Net 开发框架环境也竟然「开源」并且跨平台支持 Mac 及 Linux 了!! 同时宣布的 Visual Studio 2015 和 .Net 2015 预览版均也开放下载了.作为微软跨平台新战略下的开发工具, VS2015 支持开发人员编写跨平台应用程序,从 Windows 到 Mac.Linux.甚至是编写 iOS 和 Android 代码! 此外,微软还

WeX5 快速开发平台V3.6预览版发布(2016-9-1)

WeX5 V3.6 预览版核心特性: 一.打包特性增强:    1- 提供多WebView选择,引入腾讯X5引擎,可自动适配移动设备环境进行切换(手机app开发ty300.com),使通过X5打包生成的App具备更高的兼容性及更小的文件尺寸:    2- App资源更新新增Hash模式,除实现APP资源增量.快速更新外,部署时文件路径不会每次动态生成了,也就解决了页面分享及微信端运行更新版本后要修改绑定地址的问题:二.开发与调试能力重要更新:    1- 提供了手机端调试用的APP工具Applo

微软正式发布Chromium Edge开发预览版

目录 下载与注册 更多下载信息与订阅 导入Chrome部分数据 扩展安装 一大早从朋友圈看到消息,微软正式发布Chromium Edge 开发预览版. 下载与注册 Microsoft Edge Insider https://www.microsoftedgeinsider.com/en-us/, 下载传送门 https://c2rsetup.officeapps.live.com/c2r/downloadEdge.aspx?ProductreleaseID=Edge&platform=Defa

PyCharm 2016.3 公开预览版发布

PyCharm 2016.3 公开预览版发布了,PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制.此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发. PyCharm 2016.3 公开预览版的发布表明 PyCharm 2016.3已进入Beta阶段. 它现在已经是完整的,不会添加任何新功能,专注于修复和改善现有的功能.

微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容器技术的支持的版本,也提供了 Nano Server 和数据中心增强的功能. Windows Server 容器是微软和 Docker 合作的,开发者可以通过隔离操作系统环境的方式来运行应用.Windows Server 容器是 Docker 开源计划的一部分,容器可以通过 PowerShell 或

Swift 3.0首个开发者预览版将在5月12日释出

关于Linux的学习,请参考书籍<Linux就该这么学> swift团队在博客中宣布Swift 3.0语言首个开发者预览版将于5月12日释出,正式版将在4-6周之后推出.开发者预览阶段并无确定的更新周期和计划,不过Swift团队称努力将其控 制在4-6周内.按此计划,Swift 3.0将错过WWDC发布窗口,团队计划于年底随新版本Xcode升级版一起发布. Swift的GitHub库也将被分为三个分支:主流分支.Swift 3.0预览分支.和Swift 3.0分支.基于Swift的开发将被限定

Android L 64bit 预览版来了!Android L模拟器配置及创建项目

Android L: Android L可能就是Android Lollipop(4.5或者5.0),因为Google一直以来都是用甜点为版本命名. 而据说在10月中旬也就是15或16号Google的发布会上应该会推出Nexus 6和Nexus 9,这两个新品都是搭载Android L,而Nexus 9应该是搭载Navidia的64位CPU, 而且之前的Nexus5和7应该都会接到升级推送.(期待Nexus9好久了,希望金属机身啊) 而就在昨天10.9号,Google发布了Android L 6

【转】WP8.1开发人员预览版本已知 Bug

偶的 Lumia 920 已经升级到最新的 8.1 开发人员预览版本,使用中没有发现什么问题. 可能是因为偶玩手机的情况比较少吧!忽然看到 MS 停止此版本的更新,并说明有很多的 BUG,偶就郁闷了. 以下是从网络上复制过来的,大家看看吧. Windows Phone 8.1开发者预览版推出近1周,抢先体验和测试多多少少遇到了一些问题,有的是系统固件方面的问题,有的官方或第三方应用方面的问题,还有的是系统功能的改变带来的问题. 不想尝试新版WP8.1或者嫌麻烦的机友可以直接等今夏开始的WP8.1