编程Python 团队负责人

谈谈 Python 中的命名约定(PEP8 等)。不遵守这些约定会对代码的实践产生怎样的影响?请举例说明违反 PEP8 在项目中的实际后果。

用 Hintsage AI 助手通过面试

答案。

在 Python 中,有一系列代码风格约定,其中最主要的是 PEP8

  • 变量/函数名称:lower_case_with_underscores
  • 类名称:CapitalizedCamelCase
  • 常量:ALL_CAPS
  • 行长度: 最多 79 个字符
  • 缩进: 4 个空格(不使用 Tab!)
  • 运算符周围的空格: a = b + c
  • 导入: 每个导入单独一行,先是标准库,然后是第三方库,最后是本地库

遵守 PEP8 可以促进团队合作,提高可读性,降低入门门槛,简化测试自动化等。


难题。

在 PEP8 中建议不要使用单字母变量名。然而在 list comprehensions 或 lambda 中使用短名称可以吗?为什么?

答复: 在基本情况下,对于简短的迭代(例如,在 list comprehensions 中用于标记的变量,如 x, i, j)允许使用单字母名称,以避免混淆短表达式。对于复杂表达式,最好提供有意义的名称。

示例:

# 允许: squares = [x**2 for x in numbers] # 更好: squares = [number**2 for number in numbers]

由于对主题细节缺乏了解而导致的实际错误示例。


故事 1

在一个银行项目中,我们发现部分函数和参数使用不同的命名约定(CamelCase、snake_case、连字符)。新成员总是搞混这些名称使用的地方,几乎花了两周的时间来解决冲突和重命名变量。


故事 2

在一个数据工程项目中,不遵守缩进,混用了 Tabs 和空格。这导致在不同的开发站上出现 SyntaxError,部分开发人员花了数小时寻找多余的空格。


故事 3

在一个大型教育门户网站上,将短名称和长名称的变量混合使用。例如,一个处理日志的函数叫做 l(),而登录处理器叫做 long,这在许多 IDE 中耗费了大量时间进行导航,并在使用列表中的 l 元素时造成了混淆。