标识符是一切变量、函数、类的命名基础,里面存在大量命名硬性规则、社区编码规范、下划线特殊含义,学习结束之后欢迎在评论区留下你的测试代码、疑问,大家一起交流学习!
一、课程前言
前面课程我们学习了各类数据类型、类型转换。编写代码的时候,我们需要给 变量、函数、类、列表、字典、模块 起名字,这些自定义名称就叫做 标识符。
简单举例:age = 18,等号左边的 age 就是标识符。
本节课区分 强制硬性语法规则 和 行业推荐编码规范,拆解下划线命名细节、关键字禁区、新手高频坑点。
二、基础概念详解
1. 标识符定义
标识符就是程序员为程序当中各类对象自定义的名称,用来区分不同的数据、方法、类、文件模块。
可以通俗理解成现实生活里每个人的姓名。
2. 强制硬性命名规则(违反直接代码报错)
①合法字符:只能够由 大小写英文字母、数字、英文下划线 _ 组成;Python3 理论支持中文当做标识符,但开发环境兼容性差,工作中禁止使用中文名称。
②首字符限制:开头只能是字母或者下划线,不可以用数字开头。
③大小写敏感:Name 和 name 属于两个完全独立的标识符。
④禁止使用关键字(保留字):关键字是Python系统自带、拥有特殊功能的单词,不能拿来当作变量名。
⑤标识符不可以包含空格、减号、@、#、$ 等特殊符号。
3. 合法、非法标识符对照
✅ 合法示例
user_namenum1_ageStudentInfoPI
❌ 非法示例
1num # 数字开头user‑name # 使用减号name age # 含有空格@money # 特殊符号class # 系统关键字
4. 判断名称是否合法:isidentifier()
可以调用字符串内置方法,检测名字符串能不能作为标识符:
print("user_name".isidentifier()) # Trueprint("123abc".isidentifier()) # False
注意:"class".isidentifier() 返回True,语法格式合规,但它属于关键字,依旧禁止使用。
5. Python全部内置关键字
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
查看本机关键字代码:
import keywordprint(keyword.kwlist)
三、行业PEP‑8官方推荐命名规范(好习惯,不会报错,但是专业代码必须遵守)
规则决定代码能不能运行;命名规范决定代码好不好读。
1. 变量、函数、模块文件:蛇形命名法 snake_case
全部小写,多个单词之间用下划线隔开
user_ageget_user_infocalculate_total
2. 类名称:大驼峰命名法 PascalCase
每一个单词首字母大写,不需要下划线
StudentUserInfoGoodsManager
3. 常量名称:全大写+下划线
Python没有真正意义上不可修改的常量,依靠命名约定提醒开发者不要改动
PI = 3.14159MAX_STUDENT = 100
4. 私有属性、内部变量、魔法方法(下划线全套详解,本课重点特殊知识点)
下划线是Python标识符最特殊的设计,一共四类用法:
1. 单下划线开头 _name
约定代表内部变量,只推荐在当前模块、类内部使用;语法层面没有强制锁定,外部依旧可以访问,属于程序员之间的君子协议。
2. 双下划线开头 __name
类内部的私有属性,Python会自动修改变量名字(名称改写),外部无法直接访问,用来保护内部数据。
3. 双下划线开头、双下划线结尾 __name__
系统魔法方法、内置特殊属性,是Python自带预留标识符,例如 __init__、__str__,自己写代码不要自定义这类名称,防止和系统内置功能冲突。
4. 单独一个下划线 _
- 用来接收不需要使用的临时变量
- 循环遍历忽略数值
# 不需要接收第一个返回值,使用下划线占位_, age = ("小李",18)
四、关键特殊知识点和新手易错坑点
坑点1:不要覆盖Python内置函数名
千万不要使用 list、str、print、input、tuple 当做变量名。
一旦覆盖,原生内置函数直接失效:
list = [1,2,3]# 后续 list() 强制转换功能直接报错# print(list((4,5)))
解决方案:修改名字为 num_list、str_text。
坑点2:区分关键字和内置函数
- 关键字:属于语法保留词,例如 if、for、class,完全不能当作名字
- 内置函数:print、str,语法允许当做变量名,但是会破坏系统功能,禁止使用
坑点3:大小写严格区分
Name = "张三"name = "李四"print(Name)print(name)# 两个独立变量互不干扰
坑点4:标识符禁止使用横线 -
减号在Python里面代表减法运算,user‑name 程序会识别成 user 减去 name,直接报错,多单词只能用下划线分隔。
坑点5:见名知意原则
拒绝 a、b、c、x 这种模糊名称;
推荐 student_score、user_name,一眼看懂变量存储的数据。
尽量不要使用拼音命名。
五、课后练习题(共3题)
习题1(基础题)
判断下面哪些属于合法标识符:
num_1、1_num、user‑name、_data、class
习题2(易错题)
写出代码运行报错的原因:
str = "测试文本"num = str(123)print(num)
习题3(综合实操)
按照规范定义:
1. 蛇形命名的变量存储学生身高
2. 大驼峰格式创建一个类名
3. 全大写方式定义圆周率常量
标识符最容易踩坑的地方就是下划线含义、覆盖内置函数、关键字误用。如果你有代码报错或是知识点存在疑惑,可以在评论区留言,一起解决问题!