python 文件的组成

为了便于描述,先上一个 demo

#!/usr/bin/env python
# -*- coding: utf-8 -*- """通常这里是关于本文档的说明(docstring),须以半角的句号、 问号或惊叹号结尾! 本行之前应当空一行,继续完成关于本文档的说明
如果文档说明可以在一行内结束,结尾的三个双引号不需要换行;否则,就要像下面这样
""" import os, time
import datetime
import math import numpy as np
import xlrd, xlwt, xlutils import youth_mongodb
import youth_curl BASE_PATH = r"d:\YouthGit"
LOG_FILE = u"运行日志.txt" class GameRoom(object):
"""对局室""" def __init__(self, name, limit=100, **kwds):
"""构造函数! name 对局室名字
limit 人数上限
kwds 参数字典
""" pass def craete_and_start():
"""创建并启动对局室""" pass if __name__ == '__main__':
# 开启游戏服务
start()

Linux 平台上,一个 python 源码文件应该以下部分组成。Windows 平台上,可以省略第一项。

  1. 解释器声明
  2. 编码格式声明
  3. 模块注释或文档字符串
  4. 模块导入
  5. 常量和全局变量声明
  6. 顶级定义(函数或类定义)
  7. 执行代码

编码格式声明

通常,编码格式声明是必需的。如果 python 源码文件没有声明编码格式,python 解释器会默认使用 ASCII 编码,一旦源码文件包含非ASCII编码的字符,python 解释器就会报错。以 UTF-8 为例,以下两种编码格式声明都是合乎规则的。

# -*- coding: utf-8 -*-
# coding = utf-8

我一直 UTF-8 编码格式,喜欢使用第一种声明方式。
Windows 平台上,编码格式声明必须位于 python 文件的第一行。Linux 平台上,编码格式声明通常位于 python 文件的第二行,第一行是 python 解释器的路径声明。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

缩进

统一使用 4 个空格进行缩进。绝对不要用tab, 也不要tab和空格混用。对于行连接的情况,我一般使用4空格的悬挂式缩进。例如:

var_dict = {
'name': 'xufive',
'mail': 'xufive@sdysit.com'
}

引号

  • 自然语言使用双引号
  • 机器标识使用单引号
  • 正则表达式使用双引号
  • 文档字符串 (docstring) 使用三个双引号

注释

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

    # 块注释
# 块注释
#
# 块注释
# 块注释

行内注释,至少使用两个空格和语句分开:

age += 1  # 年龄增加一岁

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

    server= gogame(room, options)

    # =====================================
# 请勿在此处倾倒垃圾!!!
# ===================================== if __name__ == '__main__':
server.run()

空行

  • 编码格式声明、模块导入、常量和全局变量声明、顶级定义和执行代码之间空两行

  • 顶级定义之间空两行,方法定义之间空一行

  • 在函数或方法内部,可以在必要的地方空一行以增强节奏感,但应避免连续空行

空格

  • 在二元运算符两边各空一格,算术操作符两边的空格可灵活使用,但两侧务必要保持一致

  • 不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)

  • 函数的参数列表中,逗号之后要有空格

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

  • 左括号之后,右括号之前不要加添加空格

  • 参数列表, 索引或切片的左括号前不应加空格

文档字符串

文档字符串是包、模块、类或函数里的第一个语句。这些字符串可以通过对象的doc成员被自动提取,并且被pydoc所用。文档字符串的使用三重双引号(""")。如果文档字符串内容不能在一行内写完,首行须以句号、 问号或惊叹号结尾,接一空行,结束的三重双引号必须独占一行。在学习Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去了,因此我特意准备了个群 592539176 ,群里有大量的PDF书籍、教程都给大家免费使用!不管是学习到哪个阶段的小伙伴都可以获取到自己相对应的资料!

导入模块

导入总应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。导入应该按照从最通用到最不通用的顺序分组,分组之间空一行:

  1. 标准库导入

  2. 第三方库导入

  3. 应用程序指定导入

应当避免使用以下的导入方法:

from math import *

命名规范

  • 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线
  • 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
  • 函数名一律小写,如有多个单词,用下划线隔开
  • 私有函数可用一个下划线开头
  • 变量名尽量小写, 如有多个单词,用下划线隔开
  • 常量采用全大写,如有多个单词,使用下划线隔开

我的 Python 编码规范的更多相关文章

  1. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

  2. 【转】python编码规范

    http://blog.csdn.net/willhuo/article/details/49300441 决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是 ...

  3. python 编码规范整理

    PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号. ...

  4. PEP8 - Python编码规范

    PEP8 - Python编码规范 PEP8 规范 官方文档:https://www.python.org/dev/peps/pep-0008/ PEP8 规范 中文翻译:http://www.cnb ...

  5. python经典书籍推荐:python编码规范

    目录INF-qa Python 编码规范................................................................................ ...

  6. Python编码规范:IF中的多行条件

    Python编码规范:IF中的多行条件 转载 2017年03月08日 09:40:45 http://blog.csdn.net/wsc449/article/details/60866700 有时我 ...

  7. 说说Python编码规范

    前言 已有近两个月没有发表过文章了,前段时间外甥和女儿过来这边渡暑假,平常晚上和周末时间都陪着她们了,趁这个周末有空,再抽空再把这块拾起来.         这么久没写了,再次拿起键盘,想想,发表些什 ...

  8. 转--python 编码规范

    编程规范 1.1. 命名规范 1.1.1. [强制] 命名不能以下划线或美元符号开始和结尾 反例: name / __name / $Object / name / name$ / Object$ 1 ...

  9. Python 编码规范(Google)

    Python 编码规范(Google) https://blog.csdn.net/q469587851/article/details/54096093 Python 风格规范(Google) 本项 ...

  10. PEP8 Python 编码规范整理(转)

    决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...

随机推荐

  1. elasticSearch 起步(CentOS7 success)

    安装和启动 这里使用docker进行安装的 docker pull elasticsearch 然后使用 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx2 ...

  2. Elasticsearch集群知识笔记

    Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_clust ...

  3. JS高级---继承

    继承 面向对象编程思想: 根据需求, 分析对象, 找到对象有什么特征和行为, 通过代码的方式来实现需求, 要想实现这个需求,就要创建对象 ,要想创建对象, 就应该显示有构造函数, 然后通过构造函数来创 ...

  4. CentOS7下MariaDB数据库安装及配置

    前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存 ...

  5. Python入门3 —— 基本数据类型

    一:为何变量值(记录的数据)要有类型呢? 1.既然可以记录事物的状态,为什么要分类型呢? 变量值是来记录事物状态的, 而事物的状态是多种多样的, 所以对应着就要应该用不同类型的值去记录这些状态. 二: ...

  6. pytorch怎么入门学习

    pytorch怎么入门学习 https://www.zhihu.com/question/55720139

  7. 用python脚本测试接口

    自己写一个脚本,统计调用200次接口的请求时长. # -*- coding=utf-8 -*-import osimport requestsimport time url = "http: ...

  8. 题解【洛谷P3884】[JLOI2009]二叉树问题

    题面 题解 这道题目可以用很多方法解决,这里我使用的是树链剖分. 关于树链剖分,可以看一下我的树链剖分学习笔记. 大致思路是这样的: 第\(1\)次\(dfs\)记录出每个点的父亲.重儿子.深度.子树 ...

  9. command failed: npm install --loglevel error --registry=https://registry.npm 用vue-cli 4.0 新建项目总是报错

    昨天新买的本本,今天布环境,一安装vue-cli发现都4.0+的版本了,没管太多,就开始新建个项目感受哈,一切运行顺利,输入 "vue create app" 的时候,一切貌似进展 ...

  10. linux nmon安装

    系统版本红帽7.7: [root@hostuser1 nmon_permon]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core ...