为什么Python使用snake_case作为约定?

Python标准地使用带下划线的snake_case命名来命名变量和函数。了解这种样式为何成为约定。
On this page

为什么Python使用snake_case作为约定?

Excerpt

Python 采用蛇形命名法作为标准约定。了解为何采用这种样式以及它对可读性的优势。


如果你编写过 Python 代码,你会注意到一个强大的约定——变量、函数和属性使用带下划线的 snake_case 命名。但为什么这种样式会成为 Python 中的标准约定呢?让我们来检视 Python 的 snake_case 命名的由来和优势。

什么是蛇形命名法?

蛇形命名法(也称为下划线命名法)是一种使用小写字母并在单词之间加上下划线的命名样式。例如:

1first_name = "Mary"
2user_id = 4562

它在单词之间提供了视觉分隔,以提高可读性。

按照惯例,Python 代码中绝大多数的变量、函数、方法和模块名都使用 snake_case。

历史及起源

Python 的 snake_case 约定受其他语言的影响:

  • C 语言在名称中使用下划线分隔单词
  • Lisp 代码使用下划线分隔词
  • Ada 和 Modula 也在名称中采用了下划线

所以当 Python 在 1991 年创建时,使用下划线与其设计中吸收的现有语言保持一致。这种小写和下划线风格随着 Python 的发展成为标准约定。

蛇形命名法的优势

在 Python 代码中使用 snake_case 命名有一些显著优势:

  • 通过视觉分隔词汇提高可读性
  • 避免像驼峰式命名法这样的词汇运行在一起导致理解困难
  • 将名称与使用 CapWords 的类区分开
  • 跨操作系统和文件系统保持一致

snake_case 提供的可读性和区分度导致了其被广泛采用。

蛇形命名法的缺点

蛇形命名法有一些需要考虑的缺点:

  • 输入许多下划线可能很麻烦
  • 不如驼峰式命名法或帕斯卡命名法简洁紧凑

但提高的可读性远远大于这些细微的缺点。

PEP 8 样式

Python 的官方样式指南PEP 8强烈建议对变量、函数、方法和模块使用 snake_case。PEP 8 不推荐使用驼峰式命名。

例外情况

在某些情况下可能不使用 snake_case,包括:

  • 遵循外部库的约定
  • 重载默认命名风格
  • 与其他语言交互

所以可以重载 snake_case,但下划线仍然是标准约定。

自动格式化

Black这样的工具可以自动格式化 Python 代码,并默认强制执行 snake_case。这自动化了对标准命名约定的遵循。

结论

Python 在早期就受到了 C 语言和 Lisp 等语言的影响,采用了 snake_case 命名约定。这种约定保留了下来,现在已经成为惯用的 Python 代码。这种命名方式提高了可读性,并避免了冲突。

基于外部库存在一些例外情况。但是只要可能,为名称使用 snake_case 可以提供一致性,使 Python 代码更 Pythonic。