Python 命名规范大全 | Google 官方 PEP-8 速查表

2025-07-31 10:50 更新

命名

Tip
模块名:module_name
包名:package_name
类名:ClassName
方法名:method_name
异常名:ExceptionName
函数名:function_namequery_proper_noun_for_thingsend_acronym_via_https
全局常量名:GLOBAL_CONSTANT_NAME
全局变量名:global_var_name
实例名:instance_var_name
函数参数名:function_parameter_name
局部变量名:local_var_name

函数名、变量名和文件名应该是描述性的,避免缩写。特别要避免那些对于项目之外的人有歧义或不熟悉的缩写,也不要通过省略单词中的字母来进行缩写。

必须用 .py 作为文件后缀名。不要用连字符。

需要避免的名称

  1. 只有单个字符的名称,除了以下特别批准的情况:

    1. 计数器和迭代器(例如,ijkv 等等)。
    2. try/except 语句中代表异常的 e
    3. with 语句中代表文件句柄的 f
    4. 私有的、没有约束(constrain)的类型变量(type variable,例如 _T = TypeVar("_T")_P = ParamSpec("_P"))。

  2. 包含连字符(-) 的包名/模块名。

  3. 首尾均为双下划线的名称,例如 __double_leading_and_trailing_underscore__(此类名称是 Python 的保留名称)。

  4. 包含冒犯性词语的名称。

  5. 在不必要的情况下包含变量类型的名称(例如 id_to_name_dict)。

命名规范

  1. “内部(Internal)”一词表示仅在模块内可用,或者在类内是受保护/私有的。
  2. 在一定程度上,在名称前加单下划线(_)可以保护模块变量和函数(格式检查器会对受保护的成员访问操作发出警告)。
  3. 在实例的变量或方法名称前加双下划线(__,又名为 dunder)可以有效地把变量或方法变成类的私有成员(基于名称修饰 name mangling 机制)。我们不鼓励这种用法,因为这会严重影响可读性和可测试性,而且没有 真正 实现私有。建议使用单下划线。
  4. 应该把相关的类和顶级函数放在同一个模块里。与 Java 不同,不必限制一个模块只有一个类。
  5. 类名应该使用首字母大写的形式(如 CapWords),但是模块名应该用小写加下划线的形式(如 lower_with_under.py)。尽管有些旧的模块使用类似于 CapWords.py 这样的形式,现在我们不再鼓励这种命名方式,因为模块名和类名相同时会让人困惑(“等等,我刚刚写的是 import StringIO 还是 from StringIO import StringIO?”)。
  6. 新的 单元测试 文件应该遵守 PEP 8,用小写加下划线格式的方法名,例如 test_<被测试的方法名>_<状态>。有些老旧的模块有形如 CapWords 这样大写的方法名,为了保持风格一致,可以在 test 这个词和方法名之后,用下划线分割名称中不同的逻辑成分。比如一种可行的格式之一是 test<被测试的方法>_<状态>

文件名

所有 Python 文件名都应该以 .py 为文件后缀且不能包含连字符(-)。这样便于导入这些文件并编写单元测试。如果想通过不含后缀的命令运行程序,可以使用软链接文件(symbolic link)或者 exec "$0.py" "$@" 这样简单的 bash 脚本。

根据 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
方法名 lower_with_under() _lower_with_under()
函数参数/方法参数 lower_with_under -
局部变量 lower_with_under -

数学符号

对于涉及大量数学内容的代码,如果相关论文或算法中有对应的符号,则可以忽略以上命名规范并使用较短的变量名。若要采用这种方法,应该在注释或者文档字符串中注明你所使用的命名规范的来源。如果原文无法访问,则应该在文档中清楚地记录命名规范。建议公开的 API 使用符合 PEP8 的、描述性的名称,因为使用 API 的代码很可能缺少相关的上下文信息。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号