摘要:在 Python 编程中,命名约定(Naming Conventions)提高代码可读性与可维护性的关键。
在 Python 编程中,命名约定(Naming Conventions)提高代码可读性与可维护性的关键。
合理的命名不仅让代码符合团队规范,还能避免歧义与冲突。
Python 官方文档和 PEP 8(Python 官方代码风格指南) 提供了一系列通用规则,同时社区也形成了一些惯例。
一、总体原则
1、可读性优先
名字应当简洁、明确,做到“见名知义”。
2、一致性
团队或项目应当统一命名风格,不要混用。
3、避免冲突
不要随意使用 Python 保留字或与内置函数重名(如 list, str, id)。
# 不推荐:覆盖了内置 list 类型list = [1, 2, 3]print(list) # [1, 2, 3]print(type(list)) # → 实际已丢失对内置 list 的引用二、不同对象的命名风格
1、变量与函数
使用全小写字母,单词之间以下划线分隔。
这种风格称为“蛇形命名”(snake_case)。
user_name = "Alice"max_length = 100def calculate_area(radius):return 3.14 * radius * radius2、常量
使用全大写字母,单词之间可以以下划线分隔。
常量通常放在模块的顶部。
PI = 3.14159MAX_CONNECTIONS = 1003、类与异常
每个单词首字母大写,不使用下划线。异常类名通常以 Error 结尾。
这种风格称为“大驼峰命名”(PascalCase)。
class Person:passclass ValidationError(Exception):pass4、模块与包
推荐使用简短的小写字母,必要时用下划线分隔。
例如:mathutils.py, data_loader/ 等。
math_utils.pydata_loader/5、特殊方法与特殊属性
同时以双下划线开头和结尾的命名(__xxx__),保留给 Python 内部使用。这些被称为特殊方法(“魔术方法”)和特殊属性。
如 __init__, __len__, __str__ 以及 __name__ 等。
class Demo:def __init__(self):self.value = 0def __str__(self):return f"Demo(value={self.value})"__all__ = ["connect", "disconnect"] # 控制模块导出接口注意:
不要自定义不在规范内的名字,如 __myfunc__。
三、有关下划线的特殊约定
1、前置单下划线:_name
约定俗成表示“内部使用”或“受保护属性”。
不会真正阻止外部访问,只用于提示“请勿直接使用”。
class Person:def __init__(self, name):self._name = name # 内部属性在数据描述符中,常用 "_name" 作为实例字典的存储键,避免与类属性冲突。
class Descriptor:def __get__(self, instance, owner):return instance.__dict__["_value"]def __set__(self, instance, value):instance.__dict__["_value"] = value2、前置双下划线:__name
前置双下划线且无后置双下划线,这将触发(name mangling),解释器会将其改为 _类名__name。
常用于避免子类覆盖父类属性。
class A:def __init__(self):self.__secret = 42print(A.__dict__) # {'_A__secret': 42}3、后置单下划线:name_
当名字与保留字冲突时,可以加一个下划线。
class_ = "Math"id_ = 424、单下划线:_
在交互式环境中,_ 常表示上一次运算结果。
>>> 5 + 611>>>_ + 415在循环或解包中,_ 常作为占位符,表示“不关心的值”。
for _ in range(5):print("Hello")a, _, b = (1, 2, 3) # 忽略第二个值四、团队与项目的命名策略
1、统一规范
建议团队写一份代码风格指南(参考 PEP8、Google Style Guide)。
2、自动化检查
使用工具如 、、 等,自动检测和格式化代码。
3、一致性大于完美
与其在风格选择上争论,不如保持整个项目一致。
4、命名空间设计
在大型项目中,合理的包结构和模块划分也是命名策略的重要组成部分。
小结
Python 社区的基本规范来自 PEP 8:
变量/函数 → 蛇形命名(snake_case)
类/异常 → 大驼峰命名(PascalCase)
常量 → 全大写字母(UPPER_CASE)
模块/包 → 全小写(lowercase)
下划线约定:
_name → 内部使用
__name → 名称改写(避免子类冲突)
_ → 占位符或交互式结果
name_ → 避免与保留字冲突
合理使用命名约定,可让 Python 代码更清晰、专业、易维护。
“点赞有美意,赞赏是鼓励”
来源:雷霆战神王