命名规范snake_case
python snake_case命名规范
- 一、核心规则与示例
- 1. 命名规则
- 2. 正确 vs 错误示例
- 3. 你的代码中的 snake_case 应用(回顾)
- 二、snake_case 的优势(为什么 Python 推荐)
- 三、常见误区(避坑)
- 四、与其他命名风格的区别(避免混淆)
- 五、实际应用建议(结合你的代码)
- 总结
snake_case 是一种 变量/函数命名规范,核心规则是:全小写字母 + 单词之间用下划线(_)分隔,因下划线形似蛇(snake)而得名。它是 Python 社区的「默认命名风格」(PEP 8 规范推荐),你之前定义的 hex_to_int32、hex_to_uint8 等函数名,已经是标准的 snake_case 写法~
一、核心规则与示例
1. 命名规则
- 所有字符小写,无大写字母;
- 多个单词之间用 单个下划线 连接;
- 不能以数字开头,不能包含空格、特殊字符(
!@#$%等); - 避免使用 Python 关键字(如
if、for、class等)。
2. 正确 vs 错误示例
| 场景 | 正确(snake_case) | 错误/不推荐写法 | 说明 |
|---|---|---|---|
| 变量名 | user_name、hex_str | userName(驼峰)、User_Name(帕斯卡) | 单词间用下划线,全小写 |
| 函数名 | hex_to_int32、get_data | hexToInt32(驼峰)、HexToInt32 | 你之前的函数名完全符合 |
| 模块名 | hex_converter.py | hexConverter.py、HexConverter.py | 模块文件也推荐 snake_case |
| 常量名(全大写变体) | MAX_RETRY、BIT_WIDTH | maxRetry、MaxRetry | 常量通常用「全大写 snake_case」 |
3. 你的代码中的 snake_case 应用(回顾)
你之前定义的变量、函数、类型别名,都遵循了 snake_case 规范(非常标准):
# 变量名:hex_str(hex + str,下划线连接)
hex_str = "0x12345678"# 函数名:hex_to_int32(hex + to + int32,下划线连接)
def hex_to_int32(hex_str: str, endian: Endian = "big") -> int: ...# 类型别名:Endian(虽为大写开头,但属于「类型名」,Python 中类型/类名推荐 PascalCase,特殊情况)
Endian = Literal["big", "little"] # 类型别名可例外,符合 PEP 8
二、snake_case 的优势(为什么 Python 推荐)
- 可读性强:下划线清晰分隔单词,比驼峰(
hexToInt32)更易一眼识别单词边界(尤其长命名); - 符合 Python 哲学:「简洁明了」,避免大小写混用导致的拼写错误(如
userName和username容易混淆); - 工具兼容:Python 相关工具(IDE 自动补全、静态检查工具如 flake8)对 snake_case 支持更友好。
三、常见误区(避坑)
- 多下划线连用:不要写
hex__to__int32(双下划线),仅用单个下划线分隔; - 开头/结尾下划线:除非是 Python 特殊语法(如私有变量
_private_var、魔法方法__init__),否则不要写_hex_str或hex_str_; - 数字开头:不能写
16_hex_to_int,数字只能在中间或结尾(如hex_to_int16是允许的); - 关键字冲突:不能用
class、def、if等命名,如def class_to_hex(): ...是错误的。
四、与其他命名风格的区别(避免混淆)
| 命名风格 | 规则 | 示例 | 适用语言/场景 |
|---|---|---|---|
| snake_case | 全小写 + 下划线分隔 | hex_to_int32 | Python(变量/函数/模块) |
| camelCase(驼峰) | 首字母小写,后续单词首字母大写 | hexToInt32 | Java、JavaScript |
| PascalCase(帕斯卡) | 所有单词首字母大写 | HexToInt32 | Python(类/类型名)、C# |
| kebab-case(烤肉串) | 全小写 + 连字符分隔 | hex-to-int32 | 文件名、URL(Python 中不允许变量用) |
五、实际应用建议(结合你的代码)
你已经在正确使用 snake_case 了,后续保持一致即可:
- 新增变量/函数时,继续遵循「全小写 + 下划线分隔」,如
byte_data、check_hex_valid; - 常量用「全大写 snake_case」,如
MAX_32BIT_SIGNED = 2147483647; - 类/类型名用 PascalCase(如
HexConverter类),与 snake_case 区分开。
示例扩展(新增符合 snake_case 的代码):
# 常量(全大写 snake_case)
MAX_UINT8 = 255
MIN_INT32 = -2147483648# 变量(snake_case)
input_hex = "0xFF00"
little_endian_data = b'\x78\x56\x34\x12'# 函数(snake_case)
def check_hex_length(hex_str: str, bit_width: int) -> bool:"""检查十六进制字符串长度是否符合指定位数"""cleaned = hex_str.lstrip("0x").lstrip("0X")expected_length = bit_width // 4 # 1字节=8位=2个十六进制字符return len(cleaned) == expected_length
总结
snake_case 是 Python 中最常用的命名规范,核心是「全小写 + 下划线分隔」。你之前的代码(如 hex_to_int32、hex_str)已经完全符合该规范,后续只需保持一致性,就能让代码更易读、更符合 Python 社区习惯~
