541 字
3 分钟
python变量常量命令规范
  • 是否借助ai

PEP 8 命名规范总表#

类型推荐风格示例
变量小写 + 下划线user_name, total_count
常量全大写 + 下划线MAX_RETRY, DATABASE_URL
函数小写 + 下划线get_user(), calc_total()
方法小写 + 下划线save(), to_dict()
类大驼峰UserInfo, HttpClient
异常大驼峰,常用 Error 结尾ValueError, LoginError
模块小写 + 下划线,短小utils.py, data_loader.py
包全小写,尽量不用下划线mypackage, httptools
类型变量大驼峰或单大写T, AnyStr, UserType
私有成员单下划线开头_internal, _cache
名称改写双下划线开头__secret
魔术方法/特殊变量双下划线开头和结尾__init__, __name__

魔术方法与特殊变量#

一、魔术方法#

魔术方法:以 __ 开头和结尾,由 Python 自动调用,不要自己直接调用,也不要自创。

常用分类#

类别方法触发场景
生命周期__new__ / __init__ / __del__创建、初始化、销毁
字符串__str__ / __repr__print() / 调试表示
比较哈希__eq__ / __hash__ / __bool__== / hash() / bool()
容器迭代__len__ / __getitem__ / __setitem__ / __iter__ / __next__ / __contains__len() / 索引 / for / in
属性访问__getattr__ / __setattr__ / __delattr__属性不存在 / 设置 / 删除
调用上下文__call__ / __enter__ / __exit__obj() / with
运算符__add__ / __radd__ / __iadd__+ / 右加 / +=

示例#

class User:
def __init__(self, name):
self.name = name
def __str__(self):
return f"用户:{self.name}"
def __repr__(self):
return f"User(name={self.name!r})"
def __eq__(self, other):
return isinstance(other, User) and self.name == other.name
def __hash__(self):
return hash(self.name)

特殊变量#

特殊变量由 Python 自动维护,通常不要随意覆盖。

变量含义
__name__模块名;直接运行时为 "__main__"
__file__当前模块文件路径
__doc__文档字符串
__dict__模块 / 类 / 实例的命名空间字典
__class__实例所属类
__bases__直接基类元组
__mro__方法解析顺序
__all__from module import * 时导出的名字
__slots__限制实例属性,节省内存
__version__ / __author__约定俗成的包信息

示例#

main.py
def main():
print("运行主程序")
if __name__ == "__main__":
main()
class User:
__slots__ = ("name", "age")
def __init__(self, name, age):
self.name = name
self.age = age

要点#

  • if __name__ == "__main__": 用于保护脚本入口。
  • __all__ 控制 import * 的导出内容。
  • __slots__ 会阻止动态添加属性。
  • __version__、__author__ 不是内置变量,只是社区约定。
python变量常量命令规范
http://72.155.89.172/posts/python变量常量命令规范/
作者
涌现
发布于
2026-09-14
许可协议
CC BY-NC-SA 4.0