腾讯大佬的 Python 编码规范

肉眼品世界 2020-11-17 12:59:50
Python 腾讯 规范 编码 大佬


版权声明:本文为CSDN博主「天元浪子」 原文链接:https://blog.csdn.net/xufive/article/details/84957425

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所用。文档字符串的使用三重双引号(""")。如果文档字符串内容不能在一行内写完,首行须以句号、 问号或惊叹号结尾,接一空行,结束的三重双引号必须独占一行。

导入模块

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

  1. 标准库导入
  2. 第三方库导入
  3. 应用程序指定导入

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

from math import *

命名规范

  • 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线
  • 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
  • 函数名一律小写,如有多个单词,用下划线隔开
  • 私有函数可用一个下划线开头
  • 变量名尽量小写, 如有多个单词,用下划线隔开
  • 常量采用全大写,如有多个单词,使用下划线隔开
推荐阅读:
【重磅分享】从零到一搭建推荐系统指南白皮书.pdf(附48页下载链接)
【重磅】千万级智能推荐系统的架构演进
小红书架构负责人:Flink在推荐系统中的应用,25页ppt
106页的《Python进阶》中文版(附下载)
19岁大学生初学Python后如何作出最受欢迎的音乐应用
看完本文有收获?请转发分享给更多人

本文分享自微信公众号 - 肉眼品世界(find_world_fine)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2020-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[肉眼品世界]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1748494

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database