欢迎光临
我们一直在努力

一篇看懂 Python 标识符:命名规则 + 规范 + 避坑指南

在这里插入图片描述 🌈个人主页:聆风吟_ 🔥系列专栏:Python编程日志、C标准库 🔖少年有梦不应止于心动,更要付诸行动。


文章目录

  • 📋前言
  • 一、什么是标识符
  • 二、标识符的硬性命名规则
  • 三、合法 vs 非法标识符示例
    • 3.1 合法示例
    • 3.2 非法示例
  • 四、Python 关键字(不能用作标识符)
  • 五、Python 官方推荐命名规范(PEP 8)
    • 5.1 变量名、函数名、模块名
    • 5.2 类名
    • 5.3 常量
    • 5.4 私有属性/方法
      • 5.4.1 单下划线 _ 开头
      • 5.4.2 双下划线 __ 开头
    • 5.5 系统内置魔术方法
  • 六、避坑指南
    • 6.1 混淆 Python 内置函数名
    • 6.4 使用关键字作为变量名
    • 6.3 单下划线 `_` 的特殊含义
    • 6.4 Unicode 标识符(Python 3 支持但尽量别用)
  • 📝全文总结

📋前言

在编写 Python 代码时,我们无时无刻不在和标识符打交道。变量名、函数名、类名、模块名……这些都属于标识符。可以说,标识符就是代码里的 “名字”,起得规范、易懂,代码可读性会直接提升一个档次。

本文就带你彻底搞懂:什么是 Python 标识符、命名规则、关键字限制,以及行业通用的命名规范。


一、什么是标识符

标识符(Identifier) 是 Python 中用来标识变量、函数、类、模块、对象等的名称。简单理解:你给代码里的各种元素起的名字,都叫标识符。

# 下面这些都是标识符
name = "Python" # 变量名: name
def get_info(): # 函数名: get_info()
pass

class Student: # 类名: Student
pass


二、标识符的硬性命名规则

这些规则必须遵守,否则程序直接报错。

  • 只能由字母、数字、下划线 _ 组成;
  • 不能以数字开头;
  • 严格区分大小写:Name 和 name 是两个完全不同的标识符;
  • 不能使用 Python 关键字;
  • 不能包含空格、运算符(+ – * /)、特殊符号(@ # $ % 等)

  • 三、合法 vs 非法标识符示例

    3.1 合法示例

    name
    age18
    my_name
    _user
    total_count

    3.2 非法示例

    123name # 错误:数字开头
    username # 错误:含减号
    my name # 错误:含空格
    if # 错误:关键字
    class # 错误:关键字
    a@bc # 错误:含特殊符号


    四、Python 关键字(不能用作标识符)

    Python 有一批内置关键字,属于语法保留字,绝对不能用来做变量名或函数名。

    常见关键字:

    if else for while def class import from return
    True False None and or not break continue
    pass try except finally lambda del global nonlocal

    查看完整关键字列表:

    import keyword
    print(keyword.kwlist)


    五、Python 官方推荐命名规范(PEP 8)

    规则是 “不报错”,规范是 “写得好看、专业”。遵循 PEP 8 是合格 Python 开发者的基本素养。

    5.1 变量名、函数名、模块名

    使用 蛇形命名法(snake_case)

    • 全小写
    • 单词之间用下划线分隔
    • Python 模块(.py 文件)同样遵循小写蛇形命名,尽量简短

    user_name
    total_score
    calculate_average()

    5.2 类名

    使用 大驼峰命名法(PascalCase / CapWords)

    • 每个单词首字母大写
    • 不使用下划线

    class StudentInfo:
    class UserManager:

    5.3 常量

    全大写,单词用下划线分隔

    注意:Python 没有语法层面的真正常量,仅靠命名约定表示不随意修改

    MAX_COUNT = 100
    PI = 3.14159

    5.4 私有属性/方法

    5.4.1 单下划线 _ 开头

    • 以单下划线 _ 开头,表示内部使用,不建议外部访问;
    • 属性、方法都可以用单下划线开头做私有标记。

    重点:只是程序员君子约定,Python 语法不强制隔离,外部仍可访问,只是规范上不建议调用。

    class User:
    def __init__(self):
    self._password = "123456" # 约定私有属性

    def _check_password(self): # 约定私有方法
    pass

    5.4.2 双下划线 __ 开头

    以双下划线 __ 开头的属性 / 方法,Python 会做名称改写,外部无法直接访问,实现真正意义上的私有。

    注意:仅开头双下划线,不要前后都加(前后双下划线是魔术方法)

    class User:
    def __init__(self):
    self.__password = "123456" # 强制私有属性

    # 外部无法直接访问
    # u = User()
    # print(u.__password) # 直接报错

    5.5 系统内置魔术方法

    双下划线开头 + 双下划线结尾 __xxx__,是 Python 内置魔术方法。

    注意:不要自己自定义创建这种前后双下划线的名字,避免和系统内置方法冲突。

    __init__
    __str__
    __len__


    六、避坑指南

    6.1 混淆 Python 内置函数名

    虽然内置函数不是关键字(可以覆盖赋值),但这会导致后续调用出错:

    # 合法但非常危险
    len = 10 # 覆盖了内置函数 len()
    my_list = [1,2,3]
    print(len(my_list)) # TypeError: 'int' object is not callable

    建议:避免使用 len、str、list、dict、print、input 等内置函数名。

    6.4 使用关键字作为变量名

    Python 关键字是语法保留字,强行用来做变量名 / 函数名会直接报语法错误,代码无法运行。

    # 直接语法报错,根本无法执行
    # 报错信息:SyntaxError: invalid syntax(语法无效)
    if = 100
    class = "Python"
    for = 666

    避坑方案:

  • 命名前先确认不是关键字
  • 关键字加后缀:if → if_flag,class → class_name
  • 用 keyword.iskeyword("名字") 提前检查是否为关键字
  • 6.3 单下划线 _ 的特殊含义

    在交互式环境或某些循环中,_ 会存储上一次表达式的结果:

    # 交互式环境示例
    >>> 5 + 3
    8
    >>> _ # 保存上一次结果
    8

    避坑:不要在代码中依赖 _ 作为普通变量(除非明确用于 “占位” )。

    6.4 Unicode 标识符(Python 3 支持但尽量别用)

    Python 3 允许使用 Unicode 字符作为标识符:

    # 语法合法
    年龄 = 25
    函数名 = lambda x: x * 2
    print(函数名(年龄)) # 50

    建议:除非是教学演示,生产代码坚持使用 ASCII 英文,避免编码和协作问题。


    📝全文总结

    标识符本质是 Python 中变量、函数、类、模块等所有代码元素的 “名字”,核心要点可快速梳理为:

    • 组成要求:仅能由字母、数字、下划线 _ 构成,绝对不能以数字开头,禁止包含空格、运算符及特殊符号;
    • 核心限制:严格区分大小写,严禁使用 Python 关键字;
    • 规范准则:变量名、函数名、模块名用蛇形命名法(全小写+下划线分隔),类名用大驼峰命名法(首字母大写无下划线),常量用全大写+下划线分隔;
    • 避坑重点:慎用内置函数名,尽量不用中文命名
    赞(0)
    未经允许不得转载:171主机测评 » 一篇看懂 Python 标识符:命名规则 + 规范 + 避坑指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址