命名规范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 社区习惯~

相关推荐
CC码码12 分钟前
前端字符串排序搜索可以更加细化了
前端·javascript·面试
喵爱吃鱼12 分钟前
kuma-ui中Flex vs FlexMin的关键区别
前端
codingMan15 分钟前
[Android Compose] 拒绝闪烁!打造丝滑的聊天页面列表(仿微信效果)
前端
你别追我跑不动17 分钟前
基于代码扫描的 Icon 优化实践
前端·性能优化
磊磊磊磊磊18 分钟前
用AI做了个排版工具,分享一下如何高效省钱地用AI!
前端·后端·react.js
喵爱吃鱼19 分钟前
flex 0 flex 1 flex none flex auto 应该在什么场景下使用
前端
雾散声声慢20 分钟前
解决 iOS 上 Swiper 滑动图片闪烁问题:原因分析与最有效的修复方式
前端·css·ios
不穿格子的程序员23 分钟前
Redis篇3——Redis深度剖析:内存数据的“不死之身”——RDB、AOF与混合持久化
数据库·redis·缓存·数据持久化·aof·rdb
Crystal32824 分钟前
冒泡排序 bubble sort
前端·javascript·面试
企鹅侠客25 分钟前
Linux性能调优:详解CPU使用率计算方式
linux·运维·服务器·性能调优