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

 更新时间:2025年11月20日 09:56:03   作者:咖啡の猫  
本文详细介绍了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标识符与保留字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python利用正则提取字符串中数字的方法汇总

    Python利用正则提取字符串中数字的方法汇总

    本文介绍了10种使用Python正则表达式提取股票代码的方法,从简单直接的findall提取所有数字,到精确匹配特定格式的代码,再到处理多种格式的股票代码和批量处理列表,需要的朋友可以参考下
    2026-02-02
  • Python虚拟环境管理工具Conda的使用指南

    Python虚拟环境管理工具Conda的使用指南

    在Python开发中,虚拟环境是管理项目依赖的核心工具,常见的虚拟环境管理工具包括venv、virtualenv和Conda,本文将详细介绍这三种工具的使用方式并对比其特点与适用场景
    2025-06-06
  • Python按条件删除Excel表格数据的方法(示例详解)

    Python按条件删除Excel表格数据的方法(示例详解)

    本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • 如何在Python里使用ChatGPT及ChatGPT简介

    如何在Python里使用ChatGPT及ChatGPT简介

    今年最火的应该就是ChatGPT了,现在短短2个月已经突破了1亿注册用户,马斯克可高兴坏了,这篇文章主要介绍了如何在Python里使用ChatGPT及ChatGPT是什么?注册方式?需要的朋友可以参考下
    2023-02-02
  • Python利用FFT进行简单滤波的实现

    Python利用FFT进行简单滤波的实现

    今天小编就为大家分享一篇Python利用FFT进行简单滤波的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python导入父文件夹中模块并读取当前文件夹内的资源

    Python导入父文件夹中模块并读取当前文件夹内的资源

    这篇文章主要给大家介绍了关于Python导入父文件夹中模块并读取当前文件夹内资源的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 利用python为PostgreSQL的表自动添加分区

    利用python为PostgreSQL的表自动添加分区

    这篇文章主要介绍了利用python为PostgreSQL的表自动添加分区,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 对python实现模板生成脚本的方法详解

    对python实现模板生成脚本的方法详解

    今天小编就为大家分享一篇对python实现模板生成脚本的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于Python编写一个简单的服务注册发现服务器

    基于Python编写一个简单的服务注册发现服务器

    我们都知道有很多的非常著名的注册服务器,例如: Consul、ZooKeeper、etcd,甚至借助于redis完成服务注册发现。但是本篇文章我们将使用python socket写一个非常简单的服务注册发现服务器,感兴趣的可以了解一下
    2023-04-04
  • 解决redis与Python交互取出来的是bytes类型的问题

    解决redis与Python交互取出来的是bytes类型的问题

    这篇文章主要介绍了解决redis与Python交互取出来的是bytes类型的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论