python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python标识符与保留字

Python中的标识符与保留字最佳实践

作者:咖啡の猫

本文详细介绍了Python中的标识符和保留字,包括命名规则、保留字列表、命名规范以及常见陷阱和避坑指南,通过遵循这些规则和建议,可以编写出更清晰、更易维护的代码,感兴趣的朋友跟随小编一起看看吧

一、前言

你是否曾因变量名写错而调试半小时?
是否好奇为什么 classdef 不能当变量名?
又或者看到别人写的 user_nameMAX_RETRY 感到困惑?

这些问题的答案,都藏在 Python 的两个基础概念中:标识符(Identifier)保留字(Reserved Words / Keywords)

本文将带你: ✅ 掌握标识符的命名规则与最佳实践
✅ 了解 Python 所有保留字及其用途
✅ 避免常见命名错误(如覆盖内置函数)
✅ 写出符合 PEP8 规范的专业代码

二、什么是标识符?

标识符(Identifier) 是你在程序中用来命名变量、函数、类、模块等的“名字”。

例如:

name = "Alice"          # 变量名:name
def calculate_sum():    # 函数名:calculate_sum
    pass
class Student:          # 类名:Student
    pass

这些 namecalculate_sumStudent 都是标识符。

三、Python 标识符的命名规则

✅ 合法标识符必须满足:

  1. 只能包含:字母(a–z, A–Z)、数字(0–9)、下划线 _
  2. 不能以数字开头
  3. 区分大小写Name 和 name 是两个不同标识符
  4. 不能是保留字(关键字)

✅ 合法示例:

user_name
_total_count
PI
get_data
MyClass

❌ 非法示例:

2nd_place     # 以数字开头 ❌
my-variable   # 包含连字符 ❌
class         # 是保留字 ❌
@var          # 包含特殊符号 ❌

💡 小技巧:不确定是否合法?用 str.isidentifier() 判断:

print("user_name".isidentifier())  # True
print("2nd".isidentifier())        # False
print("class".isidentifier())      # True(语法上合法,但它是关键字,不能用!)

四、Python 保留字(Keywords)详解

保留字是 Python 语言预定义的、具有特殊含义的单词,不能用作标识符

截至 Python 3.12,共有 35 个保留字。你可以通过以下方式查看:

import keyword
print(keyword.kwlist)

输出:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 
'try', 'while', 'with', 'yield']

常见保留字分类速览:

类别保留字
控制流ifelifelseforwhilebreakcontinue
函数/类定义defclassreturnyield
异常处理tryexceptfinallyraiseassert
逻辑运算andornotisin
作用域globalnonlocal
异步编程asyncawait
常量TrueFalseNone
其他importfromaswithpassdellambda

⚠️ 注意:TrueFalseNone 虽然是常量,但也是保留字,不能赋值

True = 1  # SyntaxError!

五、命名规范:不只是“能用”,更要“好用”

即使标识符合法,乱命名也会让代码难以维护。Python 官方推荐遵循 PEP8 风格指南。

📌 推荐命名风格:

对象类型命名风格示例
变量、函数、方法snake_case(小写+下划线)user_idget_user_info
类名PascalCase(大驼峰)UserProfileDatabaseConnection
常量(模块级)UPPER_SNAKE_CASEMAX_CONNECTIONSDEFAULT_TIMEOUT
私有成员(约定)单下划线开头_internal_helper
强私有(名称修饰)双下划线开头__secret_data

✅ 正确示例:

MAX_RETRY_COUNT = 3
class UserManager:
    def __init__(self):
        self._users = []
    def add_new_user(self, user_name):
        if not user_name:
            raise ValueError("User name cannot be empty")
        self._users.append(user_name)

❌ 反面教材:

maxRetryCount = 3       # 混合风格,不符合 Python 习惯
class usermanager:      # 类名应大写
def AddUser():          # 函数名不应大写开头
    pass

六、常见陷阱与避坑指南

❌ 陷阱 1:覆盖内置函数或类型

list = [1, 2, 3]   # 覆盖了内置 list()
print(list("abc")) # TypeError: 'list' object is not callable

✅ 解决方案:避免使用内置名称(如 list, str, int, dict, open, id 等)

🔍 查看所有内置名称:

import builtins
print(dir(builtins))

❌ 陷阱 2:使用中文或拼音命名(虽合法但不推荐)

用户名 = "张三"      # 合法,但不利于协作和国际化
def 获取数据():      # 同上
    pass

✅ 建议:始终使用英文命名,哪怕简单如 user, data, result

❌ 陷阱 3:单字符命名(除非在极小作用域)

for i in range(10):  # 可接受(传统循环变量)
    pass
def f(x):            # 不推荐!x 是什么?
    return x * 2

✅ 改进:

def double_number(value):
    return value * 2

七、工具辅助:让命名更规范

  1. IDE 提示:VS Code / PyCharm 会高亮保留字,并提示命名风格问题
  2. 静态检查工具
    • flake8:检查 PEP8 合规性
    • pylint:检测命名、未使用变量等
  3. 命名插件:如 VS Code 的 “Python Docstring Generator” 可自动生成规范注释

八、总结

概念关键点
标识符用于命名变量、函数、类等,需符合命名规则
保留字35 个关键字,具有特殊语法意义,禁止用作标识符
命名规范遵循 PEP8:snake_case、PascalCase、UPPER_SNAKE_CASE
避坑原则不覆盖内置、不用拼音、不用模糊缩写

🌟 记住
好的命名,是代码最好的注释。
一个清晰的 user_email,胜过十行解释!

九、结语

到此这篇关于Python中的标识符与保留字的文章就介绍到这了,更多相关Python标识符与保留字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文