惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
IT之家
IT之家
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
J
Java Code Geeks
博客园 - 聂微东
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
宝玉的分享
宝玉的分享
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
NISL@THU
NISL@THU
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
博客园 - Franky
L
Lohrmann on Cybersecurity
S
Secure Thoughts
量子位
V
Vulnerabilities – Threatpost
Last Week in AI
Last Week in AI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LINUX DO - 最新话题
I
InfoQ
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog

博客园 - lykyl的自留地

树莓派编译安装opencv3 (2019.1.6更新) centos6 安装EPEL "检索COM类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005" 问题的解决 centos6.x 安装pylucene (20161027改) - lykyl的自留地 趣味python编程之经典俄罗斯方块 改进uwsgi启动脚本,使其支持多个独立配置文件 在CentOS 6.5上安装python2.7 "System.Security.Cryptography.CryptographicException: 拒绝访问" 问题的解决方法 利用SHELL脚本实现文件完整性检测程序(1.2版更新) 获取linux服务器基本信息脚本 DELPHI实现关闭指定进程,自身防杀 基于python编写的天气抓取程序 linux使用心得(持续更新) vim使用心得(持续更新) NFS服务基本配置及使用 利用shell脚本实现计划任务功能 V1.2 利用shell脚本实现计划任务功能 rsync简明手册 linux bash script简明手册(持续更新)
python编码规范
lykyl的自留地 · 2016-07-25 · via 博客园 - lykyl的自留地

python编码规范


文件及目录规范

  • 文件保存为 utf-8 格式。

  • 程序首行必须为编码声明:# -*- coding:utf-8 -*-

  • 文件名全部小写。


代码风格

空格

  • 设置用空格符替换TAB符。

  • 代码缩进为4个空格符。

  • 仅在运算符前后(如+,-,=,==)各加一个空格,不要在用于指定关键字参数或默认参数值的'='号周围使用空格,其他语句和表达式中都不要加空格。

分行

  • 程序头部声明和import之间、import和程序之间用一个空行分隔。

  • 类定义之间以及程序与if __name__ =="__main__":空两行。类定义行与成员函数之间以及函数定义之间空一行。

  • 每个语句独立一行,不要使用;在一行内放置多条语句。

  • 每行字符数控制在72以内,如果超长可以使用反斜杠(\)折行。

  • 如果语句包含()、[]、{},可使用括号内行延续,换行后加两个缩进以便于阅读。

  • 换行位置应在元素分隔符或操作符前。

代码约定

  • import紧跟在编码声明和程序功能注释之后, import顺序应该是先系统标准包,其次第三方包,最后是自定义包。

命名规则

命名方法

  • Lowercase(小写)

  • lower_case_with_underscores(有下划线的小写)

  • UPPERCASE(大写)

  • UPPER_CASE_WITH_UNDERSCORES(有下划线的大写)

  • CapitalizedWords (或 CapWords,CamelCase这样命名是因为可从字母的大小写分出单词。这有时也被当作StudlyCaps。)

  • mixedCase (与CapitalizedWords的不同在于首字母小写!)

命名约定

  • 单字符名称仅用于计数器和迭代器。

  • 双下划线开头并结尾的名称为系统保留命名法,编程中禁止使用。

  • 包名和模块名:不含下划线全小写。

  • 类名:使用CapWords约定。内部使用的类外加单下划线前缀。

  • 函数名和变量名:使用mixedCase约定。

  • 常量:使用有下划线的大写约定。

  • protected变量或函数:在mixedCase约定的基础上加单下划线前缀。

  • private变量或函数:在mixedCase约定的基础上加双下划线前缀。

  • 如果命名与系统名冲突,则加单下划线后缀。

应避免的命名

  • 单字符名称, 除了计数器和迭代器。

  • 包/模块名中的连字符(-)。

  • 双下划线开头并结尾的名称。


注释规范

注释原则

  • 不要描述代码本身。

  • 功能修改后注释一定要第一时间修改。

文档字符串

文档字符串是python特有的注释形式。通常做为程序文件、包、模块、类、函数的注释方式,可以通过对象的__doc__成员被自动提取, 并且被pydoc所用.

程序文件、包、模块注释

位置在import之前,上下各空两行。

'''<程序名>

<功能说明>

version:<版本号>

author:<开发者姓名>

createdate:

modifydate:

'''

函数注释

位置紧跟函数定义之后。

'''<功能说明>

args:<参数名>:<说明>
... ...

returns:<返回值说明>

raises:<可能引起的异常说明>

'''

类注释

在函数注释的基础上加入attributes(属性)

块注释

通常用于说明程序段功能、技巧性编码等。位置在需说明的代码段之前。

行注释

作用同块注释,位置在需说明的代码后两个单位缩进处。


编码指导

  • 类如果不继承自其他类,则应显式继承object。

  • 尽量使用%格式化方法组织字符串,不要使用字串拼接。如:"%s hello!" % (userName)

  • 尽可能使用with语句处理文件或socket句柄,以确保使用完后被关闭。

  • 尽可能使用is、is not取代== 。

  • 主程序应放在main()函数中,在程序文件的末尾通过如下形式调用。


if __name__ =='__main__':

    main()


参考