当前位置: 首页 > news >正文

Python中的标识符与保留字

一、前言

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

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

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


二、什么是标识符?

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

例如:

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

这些 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 = 3class 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):  # 可接受(传统循环变量)passdef 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,胜过十行解释!


九、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

http://www.dtcms.com/a/618881.html

相关文章:

  • 怎么查一个网站是否备案ftp如何导入wordpress 主题
  • IntersectionObserver API
  • 陕西煤业化工建设集团有限公司网站网站建设如何选择良好的服务器
  • 贵阳高端网站开发制作做网站应该画什么图
  • 深入浅出Ansible循环语句:从基础到实践
  • 沧州北京网站建设营销 网站制作
  • 徐州10年网站建设 推广公司wordpress 明星主题
  • 修复Ubuntu系统文件损坏问题:手动fsck指令
  • 手动监控3小时?RPA实时追踪小红书关键词排名,效率提升2000%[特殊字符]
  • 网站怎么做响应式番禺做网站最便宜的哪家公司
  • 创建站点的步骤微信小游戏怎么开发
  • K8S学习笔记:基本概念
  • MYSQL的所有基础操作
  • 张家港网站推广自己在线制作logo免费模版
  • 网站后台用什么语言恩施做网站多少钱
  • LeetCode100--22. 括号生成
  • LeetCode 分类刷题:1669. 合并两个链表
  • 什么是JMeter?如何用JMeter做性能测试?
  • 高端装饰公司网站设计昆山网站建设首页
  • 河南省住房和城乡建设部网站首页郑州网站关键词优化外包
  • spring学习笔记之注解开发
  • 中药饮片批发商是什么?其在中药供应链中的意义和作用是什么?
  • 鲜花销售|花店销售|基于java+vue的鲜花销售系统设计与实现(源码+数据库+文档)
  • 什么是h5网站如何在服务器里建设网站
  • 最便宜的低价机票网站建设附近临时工500元一天
  • SHA-256的初始哈希值是怎么规定的?
  • 做视频添加字幕的网站wordpress 获取导航栏
  • 建立网站数据库实验报告徐州设计公司有哪些
  • 专业网站公司本地佛山企业网站建设
  • 网页设计模板素材网站做一个招聘信息的网站 用什么做网站的软件