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

​Python 标识符是啥?​

Python 的标识符就是我们写代码时用来给变量、函数、类等取名字的东西

你写的 my_variable 是个标识符,
定义的 add_numbers 函数名也是个标识符,
甚至你写的 Cat 类名,也是标识符。

一句话总结:标识符就是代码里给“东西”起的名字

标识符的基本规则:别乱取名字

Python 对标识符的命名有一套硬性规则,否则就会报错。划重点⚡:

标识符只能由字母(a-z、A-Z)、数字(0-9)、下划线(_)组成。
比如:my_var、a123、_hidden 都是合法的标识符。但 @myvar、1abc 就不行,Python 会直接罢工。

标识符不能以数字开头
例如:123abc 是非法的,但 abc123 是合法的。

区分大小写 在 Python 中,myvar 和 MyVar 是完全不同的标识符(别问为什么,问就是“编程是个细活”)。

不能是 Python 的关键字!
比如 def、class、if 这些 Python 语言的保留字,不能拿来当标识符用。用了的话,Python 编译器会大喊一声:“哥,这名字我先用了!”

尽量别用下划线开头的名字,除非你知道它的含义。
_var 和 __var 在 Python 中有特定的用途,比如保护变量或表示私有变量,瞎用可能带来麻烦。

标识符的常见命名规范:别让别人看不懂你的代码!

虽然 Python 没强制命名规范,但Python 社区有一套通用的风格指南,比如:

变量名:全小写,单词之间用下划线分隔。

✅ my_variable
❌ myVariable(虽然不报错,但这更像 Java 的风格)

函数名:和变量名一样,用全小写 + 下划线。

✅ calculate_sum()
❌ CalculateSum()

类名:首字母大写,单词之间用驼峰命名法(PascalCase)。

✅ MyClass
❌ my_class

常量名:全大写,用下划线分隔单词。

✅ PI = 3.14
✅ MAX_CONNECTIONS = 10

划重点:
Python 的命名规范不是必须遵守,但写得越规范,代码越容易被别人理解。代码是给人看的,机器只是顺便运行的。

标识符的特殊用途:Python 的“潜规则”

除了普通变量名和函数名,Python 还有一些标识符的“潜规则”:

下划线开头的标识符(_var):保护变量

这是 Python 的约定俗成规则,表示这是一个“非公开”变量,最好别在模块外部直接访问。

_internal_var = 42 # 外部代码尽量别碰 

双下划线开头的标识符(__var):类中的私有变量

双下划线用于类中的变量,表示这个变量是“私有”的,不希望外部直接访问。

class MyClass:     def __init__(self):         self.__private_var = 10 

双下划线包裹的标识符(__var__):Python 的特殊方法或属性

比如 __init__ 是类的构造函数,__name__ 是模块的名字。这些标识符有特定用途,别拿来随便用。


标识符的反面教材:都写过的迷惑名字

看似合法的标识符,但非常不推荐。单个字母:a、b、c,一眼看去根本不知道变量是干啥的。完全随机的标识符:asdf1234,这名字让人崩溃。和保留字撞车: 比如用 class_ 替代 class,虽然不报错,但读起来像在耍人。取名字是门艺术,别让别人看到代码后想锤人。

代码是给人看的,标识符是程序员浪漫的语言。一份好代码,从一个好名字开始。
http://www.lryc.cn/news/506565.html

相关文章:

  • 视频及JSON数据的导出并压缩
  • VScode使用教程(菜鸟版)
  • 【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)
  • Android AOSP 源码中批量替换“phone“为“tablet“的命令详解
  • 基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文
  • 域内用户枚举与密码喷洒与密码爆破
  • DIY 集合求并集(union)运算的代码 ← Python
  • Redis bitmaps 使用
  • vue深层数据响应的问题
  • 解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南
  • 项目计划表如何制作?使用甘特图制作项目计划表的步骤
  • Flutter-底部分享弹窗(showModalBottomSheet)
  • 初学stm32 --- 时钟配置
  • LeetCode:226.翻转二叉树
  • (css)鼠标移入或点击改变背景图片
  • Unbuntu下怎么生成SSL自签证书?
  • OpenGL ES 03 加载3张图片并做混合处理
  • 深度学习-74-大语言模型LLM之基于API与llama.cpp启动的模型进行交互
  • PyTorch 2.0 中设置默认使用 GPU 的方法
  • 如何在 Ubuntu 22.04 服务器上安装 Jenkins
  • 【一篇搞定配置】如何在Ubuntu上配置单机/伪分布式Hadoop
  • 利用Map集合设计程序,存储城市和对应等级相关信息
  • 【自动驾驶】单目摄像头实现自动驾驶3D目标检测
  • 21 go语言(golang) - gin框架安装及使用(二)
  • Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)
  • 【Unity3D】实现可视化链式结构数据(节点数据)
  • Three.js推荐-可以和Three.js结合的动画库
  • 增强现实(AR)和虚拟现实(VR)的应用
  • 告别机器人味:如何让ChatGPT写出有灵魂的内容
  • 【Threejs】从零开始(六)--GUI调试开发3D效果