iFluxArt

博客导航友链
© 2025 iFluxArt 保留所有权利
目录
语言规则
Lint 工具
导入格式
future 语句
风格规则
分号
行长度
括号
缩进
文件和sockets
字符串
字符串格式化
字符串引号
注释
文档字符串
函数和方法的文档字符串
类的文档字符串
块注释和行注释
TODO 注释
命名规范
分类
标签
品牌案例科技品牌快捷键中英对照表术语对照汽车品牌食品饮料服装文案运动品牌读书笔记广告理论办公软件文案美妆护肤视频剪辑部署最佳实践广告文案电商零售创意金融支付写作GitnpmCSS动画代码质量HTMLReactJavaScript组件开发静态站点剧本写作电影创作创作指南真人秀WindowsAcrobatAfter EffectsAuditionIllustratorLightroomMedia EncoderPhotoshopPremiere ProFinal Cut Pro设计工具直播电商私域运营运营策略私域流量DeepSeek运维GeminiCLIGoogle AI配置指南提示词工程AI交互MetaPayEasy亚马逊京东字节跳动滴滴百度网易美团腾讯阿里巴巴IBM思科甲骨文佳能大疆尼康科大讯飞AppleGoogleHTCOPPOrealmevivo一加三星华为小米微软索尼联想荣耀魅族招聘小鹏特斯拉理想蔚来CELEBRITYMISSOSEOK baby步履不停丰田奔驰奥迪宝马本田唯品会拼多多AMD惠普戴尔英伟达英特尔兰蔻完美日记雅诗兰黛谐音梗安踏李宁耐克阿迪达斯微信支付支付宝伊利农夫山泉可口可乐星巴克百事可乐大卫·奥格威教程威廉·伯恩巴克路克·苏立文约瑟夫·休格曼标题技巧版本控制工作流程VS Code开发环境插件配置Docker容器化GitHubSSH包管理pnpmTailwind CSS动画库Python规范工程实践Markdown语法对比动画工具前端开发CSSFAQ编程基础Web框架项目管理Astro评论系统GitHub集成React组件Hexo静态博客主题开发HugoGo语言Next.js技术栈VitePressVue3文档站点开发指南Monorepo剧本结构动态结构悬念设计叙事技巧人物设计戏剧冲突导演思维写作技巧结局设计故事创作电影节国际电影电影奖项电视节目综艺节目探险节目电视制作电影结构剧作分析影像构成电影分析精神分析叙事研究经典台词诗意台词中国电影Cloudflare网络安全VPNNVIDIA显卡驱动AI工具Obsidian插件知识管理V2rayN代理工具网络配置鼠标设置注册表修改显示设置高分屏Lightroom ClassicFCP邀请码内测PDF工具动画制作音频编辑照片处理视频编码Keynote演示软件ExcelPowerPointWordWPS剪映微信公众号账号注册平台认证抖音小店店铺运营电商运营抖音运营账号定位内容策略运营思维商业策略数据驱动人货场直播间运营直播合规违禁词平台规则直播带货运营流程直播脚本话术模板直播技巧运营指南微信生态内容创作行业分类成功案例方法论商业价值变现模式会员运营用户分层商业变现Waves音频插件混音制作
相关文章

开发最佳实践

将 Monorepo 中的 Packages 发布到 npm 的完整指南

VS Code 开发环境配置

开发最佳实践

Next.js 技术栈推荐清单与最佳实践

Google Python 编码规范指南

2025年6月9日
5344 字
预计阅读 22 分钟

这是 Google 为其内部 Python 代码制定的编码规范和风格指南,目的是帮助开发者编写干净、一致且可维护的 Python 代码。英文完整版可以访问 Google Style Guide。

语言规则

Lint 工具

使用pylint等工具对代码进行检查可以帮助发现常见的错误和问题。

导入格式

导入语句应该遵循以下规则:

  1. 每个导入应该独占一行。

推荐格式:

Python
import os
import sys

不推荐格式

Python
import os, sys
  1. 导入应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。

  2. 导入应该按照从最通用到最不通用的顺序分组:

  • 标准库导入
  • 第三方库导入
  • 应用程序特定导入

future 语句

__future__ 导入允许在当前 Python 版本中使用更现代的语法特性。即使当前不使用这些特性,保留这些导入可以防止后续修改代码时无意中依赖于旧行为,例如:

Python
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

风格规则

分号

不要在行尾加分号,也不要用分号将两条命令放在同一行。

行长度

每行不超过80个字符,以下情况除外:

  1. 长的导入模块语句
  2. 注释里的URL

在编写Python代码时,应避免使用反斜杠来连接行。我们可以利用Python的特性,即圆括号、中括号和花括号会隐式地连接其中的行。

以下是推荐的使用方式示例:

Python
foo_bar(self, width, height, color='black', design=None,
        x='foo', emphasis=None, highlight=0)

if (width == 0 and height == 0 and
    color == 'red' and emphasis == 'strong'):

对于长字符串,可以使用圆括号实现隐式行连接,例如:

Python
x = ('这是一个非常长非常长非常长非常长'
     '非常长非常长非常长非常长非常长非常长的字符串')

括号

宁缺毋滥地使用括号。除非是用于实现行连接,否则不要在返回语句或条件语句中使用括号,但在元组两边使用括号是可以的。

推荐使用方式:

Python
if foo:
    bar()
while x:
    x = bar()
if x and y:
    bar()
if not x:
    bar()
return foo
for (x, y) in dict.items(): ...

不推荐使用方式;

Plaintext
if (x):
    bar()
if not(x):
    bar()
return (foo)

缩进

用 4 个空格来缩进代码,绝对不要用 tab ,也不要 tab 和空格混用。

文件和sockets

在文件和 sockets 结束时,显式地关闭它们。推荐使用 "with" 语句来管理文件,例如:

Python
with open("hello.txt") as hello_file:
    for line in hello_file:
        print(line)

对于不支持使用 "with" 语句的类似文件的对象,使用contextlib.closing() ,例如:

Python
import contextlib
with contextlib.closing(urllib.urlopen("http://www.python.org/")) as front_page:
    for line in front_page:
        print(line)

字符串

字符串格式化

避免在循环中用 + 和 += 操作符来累加字符串。

推荐使用 .join() 方法连接字符串列表,例如:

Python
items = ['<table>']
for last_name, first_name in employee_list:
    items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
items.append('</table>')
employee_table = ''.join(items)

不推荐的使用方式:

Python
employee_table = '<table>'
for last_name, first_name in employee_list:
    employee_table += '<tr><td>%s, %s</td></tr>' % (last_name, first_name)
employee_table += '</table>'

字符串引号

在同一个文件中,保持使用字符串引号的一致性。使用单引号 ' 或者双引号 " 之一来引用字符串,并在同一文件中沿用。

为多行字符串使用三重双引号 """ 而非三重单引号 ''' 。文档字符串必须使用三重双引号 """ 。

推荐使用方式:

Python
print("This is much nicer.\n"
      "Do it this way.\n")

不推荐使用方式:

Python
print("""This is pretty ugly. Don't do this.""")

注释

文档字符串

Python 有一种独特的注释方式:使用文档字符串。文档字符串是包、模块、类或函数里的第一个语句,可以通过对象的 __doc__ 成员被自动提取。

文档字符串应该这样组织:

  • 首先是一行以句号、问号或惊叹号结尾的概述
  • 接着是一个空行
  • 接着是文档字符串剩下的部分

函数和方法的文档字符串

文档字符串应该包含函数做什么,以及输入和输出的详细描述。关于函数的几个方面应该在特定的小节中进行描述,例如:

Python
def fetch_bigtable_rows(big_table, keys, other_silly_variable=None):
    """取回表格中的行

    获取表格中对应于键值的行数据。

    Args:
        big_table: 一个表格对象
        keys: 需要获取的行的键值列表
        other_silly_variable: 另一个参数

    Returns:
        一个字典映射键值到行数据

    Raises:
        IOError: 访问表格对象时发生错误
    """
    pass

类的文档字符串

类应该在其定义下有一个用于描述该类的文档字符串。如果有公共属性,文档中应该有一个属性段,例如:

Python
class SampleClass(object):
    """类的摘要

    详细的类信息...

    Attributes:
        likes_spam: 布尔值,指示我们是否喜欢SPAM
        eggs: 整数,表示我们已下的蛋的数量
    """

    def __init__(self, likes_spam=False):
        """初始化SampleClass"""
        self.likes_spam = likes_spam
        self.eggs = 0

    def public_method(self):
        """执行操作"""
        pass

块注释和行注释

最需要写注释的是代码中那些技巧性的部分。对于复杂的操作,应该在其操作开始前写上若干行注释;对于不是一目了然的代码,应在其行尾添加注释。

TODO 注释

为临时代码使用 TODO 注释,这是一种短期解决方案。TODO 注释格式如下:

Python
# TODO(kl@gmail.com): 在这里使用"*"进行字符串重复
# TODO(Zeke): 改为使用关系

如果 TODO 是 "将来做某事" 的形式,请确保包含一个指定的日期或事件。

命名规范

Python 之父 Guido 推荐的命名规范:

类型公共内部
模块lower_with_under_lower_with_under
包lower_with_under
类CapWords_CapWords
异常CapWords
函数lower_with_under()_lower_with_under()
全局/类常量CAPS_WITH_UNDER_CAPS_WITH_UNDER
全局/类变量lower_with_under_lower_with_under
实例变量lower_with_under_lower_with_under (protected) 或 __lower_with_under (private)
方法名lower_with_under()_lower_with_under() (protected) 或 __lower_with_under() (private)

避免使用的命名:

  1. 单字符名称,除了计数器和迭代器
  2. 包/模块名中的连字符()
  3. 双下划线开头并结尾的名称(Python保留,例如__init__)

命名约定:

  1. "内部(Internal)"表示仅模块内可用,或者在类内是保护或私有的
  2. 用单下划线(_)开头表示模块变量或函数是 protected 的
  3. 用双下划线(__)开头的实例变量或方法表示类内私有
  4. 将相关的类和顶级函数放在同一个模块里
  5. 对类名使用大写字母开头的单词(如 CapWords,即 Pascal 风格),但是模块名应该用小写加下划线的方式(如 lower_with_under.py)
版权声明

本文为作者原创文章,遵循 CC BY-NC-ND 4.0 协议。

  • 署名:转载时请注明出处
  • 非商业性使用:禁止商业用途
  • 禁止演绎:不得修改原文
查看完整许可证