命名规范snake_case

python snake_case命名规范

snake_case 是一种 变量/函数命名规范 ,核心规则是:全小写字母 + 单词之间用下划线(_)分隔 ,因下划线形似蛇(snake)而得名。它是 Python 社区的「默认命名风格」(PEP 8 规范推荐),你之前定义的 hex_to_int32hex_to_uint8 等函数名,已经是标准的 snake_case 写法~

一、核心规则与示例

1. 命名规则
  • 所有字符小写,无大写字母;
  • 多个单词之间用 单个下划线 连接;
  • 不能以数字开头,不能包含空格、特殊字符(!@#$% 等);
  • 避免使用 Python 关键字(如 ifforclass 等)。
2. 正确 vs 错误示例
场景 正确(snake_case) 错误/不推荐写法 说明
变量名 user_namehex_str userName(驼峰)、User_Name(帕斯卡) 单词间用下划线,全小写
函数名 hex_to_int32get_data hexToInt32(驼峰)、HexToInt32 你之前的函数名完全符合
模块名 hex_converter.py hexConverter.pyHexConverter.py 模块文件也推荐 snake_case
常量名(全大写变体) MAX_RETRYBIT_WIDTH maxRetryMaxRetry 常量通常用「全大写 snake_case」
3. 你的代码中的 snake_case 应用(回顾)

你之前定义的变量、函数、类型别名,都遵循了 snake_case 规范(非常标准):

python 复制代码
# 变量名: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 推荐)

  1. 可读性强 :下划线清晰分隔单词,比驼峰(hexToInt32)更易一眼识别单词边界(尤其长命名);
  2. 符合 Python 哲学 :「简洁明了」,避免大小写混用导致的拼写错误(如 userNameusername 容易混淆);
  3. 工具兼容:Python 相关工具(IDE 自动补全、静态检查工具如 flake8)对 snake_case 支持更友好。

三、常见误区(避坑)

  1. 多下划线连用 :不要写 hex__to__int32(双下划线),仅用单个下划线分隔;
  2. 开头/结尾下划线 :除非是 Python 特殊语法(如私有变量 _private_var、魔法方法 __init__),否则不要写 _hex_strhex_str_
  3. 数字开头 :不能写 16_hex_to_int,数字只能在中间或结尾(如 hex_to_int16 是允许的);
  4. 关键字冲突 :不能用 classdefif 等命名,如 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 了,后续保持一致即可:

  1. 新增变量/函数时,继续遵循「全小写 + 下划线分隔」,如 byte_datacheck_hex_valid
  2. 常量用「全大写 snake_case」,如 MAX_32BIT_SIGNED = 2147483647
  3. 类/类型名用 PascalCase(如 HexConverter 类),与 snake_case 区分开。

示例扩展(新增符合 snake_case 的代码):

python 复制代码
# 常量(全大写 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_int32hex_str)已经完全符合该规范,后续只需保持一致性,就能让代码更易读、更符合 Python 社区习惯~

相关推荐
石一峰6991 小时前
深入理解 Linux 中断三层机制与 1-Wire 时序锁原理
linux·运维·服务器
世界哪有真情1 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
无限码农2 小时前
Linux上通过cmake编译uchardet
linux·运维·服务器
Listen·Rain2 小时前
Vue3:setup详解
前端·javascript·vue.js
白露与泡影2 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透
数据库·redis·缓存
Patrick_Wilson3 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen3 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
赵渝强老师3 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据
数据库·oracle
ACP广源盛139246256733 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
小粉粉hhh4 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js