Skip to content

Python 标识符

标识符是用户为变量、函数、类、模块和其他对象定义的名称。听起来很简单,但实际上并非如此。标识符并非随意命名,它通过赋予事物相关的名称,使代码更易读、更易理解。为此,必须遵循许多规则。

在本教程中,我们将学习编写标识符的规则、有效和无效标识符的示例、如何测试字符串是否为有效标识符,最后,我们将了解命名标识符的最佳实践。

Python中标识符的编写规则

编写 Python 标识符时必须遵循一些命名约定和规则。

  • 关键字 不能用作标识符名称,因为它们是 Python 编程语言中的保留字。如果尝试这样做,将会抛出SyntaxError 异常。
  • Python 标识符可以包含小写字母 (az)、大写字母 (AZ)、数字 (0-9) 和下划线 (_)。
  • 标识符不能以数字开头。例如,10test 就是一个无效的标识符。
  • Python 标识符不能只包含数字。例如,888 就是一个无效的标识符。
  • Python 标识符名称可以以下划线开头。因此,_test 就是一个有效的标识符。
  • 标识符名称的长度没有限制。但是,不要使用过长的标识符,这只会损害你作为程序员的信誉。
  • Python 标识符区分大小写。因此,“abc”和“ABC”是两个不同的标识符。为了保持程序之间的一致性,最好使用小写字母作为标识符。

Python 中有效标识符的示例

让我们来看一些Python中有效标识符的例子。

  • ab10c:仅包含字母和数字
  • abc_DE:包含所有有效字符
  • _:令人惊讶的是,下划线确实是有效的标识符。
  • _abc:标识符可以以下划线开头

Python中无效和有效标识符的示例

现在让我们来看一些Python中无效标识符的例子。

  • 99:标识符不能仅由数字组成
  • 9abc:标识符不能以数字开头
  • x+y:唯一允许的特殊字符是下划线
  • for:它是 Python 中的一个保留关键字。

如何测试一个字符串是否为有效的标识符?

我们可以使用字符串的 isidentifier() 函数来检查标识符名称是否有效。但是,这种方法不会考虑保留关键字。因此,我们可以结合 keyword.iskeyword()函数来检查名称是否有效。

python
print("abc".isidentifier())  # True
print("99a".isidentifier())  # False
print("_".isidentifier())  # True
print("for".isidentifier())  # True - wrong output

我们知道“for”是一个保留关键字,所以它不是一个有效的标识符。让我们定义一个函数来测试标识符名称是否有效。

python
def is_valid_identifier(s):
    return s.isidentifier() and not keyword.iskeyword(s)
 
print(is_valid_identifier("for"))  # False

Python中标识符命名最佳实践

  • 类名应以大写字母开头。例如:Person、Employee 等。
  • 如果类名包含多个单词,则每个单词的首字母必须大写。例如:EmployeeData、StringUtils 等。
  • 变量、函数和模块名称应该使用小写字母。例如,collections、foo() 等。
  • 如果变量、函数和模块名称包含多个单词,则用下划线分隔。例如,is_empty()、employee_object 等。
  • 对于私有变量,可以在其名称前加上下划线。
  • 标识符名称的首尾字符应避免使用下划线。Python 内置类型会使用下划线。
  • 如果标识符以两个下划线开头和结尾,则表示该标识符是语言定义的特殊名称,例如 init。因此,应避免标识符名称的开头和结尾都使用两个下划线。
  • 保持标识符名称的含义清晰明确,例如:电话号码、是否大写等。
  • 如果一个函数返回布尔值,最好以“is”开头命名。例如,isidentifier、iskeyword 等。
  • 标识符名称的长度没有限制。但是,请保持简洁明了。例如,the_employee_object_first_name可以更好地命名为emp_first_name。

总结

关键字和标识符是 Python 中两个至关重要的概念。Python 标识符是用作变量名的名称,旨在提高代码的可读性和易理解性。在本教程中,我们学习了标识符的命名规则,并提供了有效和无效标识符的示例。在编写程序标识符时,务必牢记这些规则。

下一步是什么

你对Python中的标识符有了初步了解。现在,你应该学习以下教程,掌握Python编程的基础知识。

参考

https://docs.python.org/3/reference/lexical_analysis.html#identifiers