​Python 标识符是啥?​

embedded/2024/12/21 7:57:49/

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.ppmy.cn/embedded/147477.html

相关文章

内容与资讯API优质清单

作为开发者,拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源,为你的开发工作提供了强大的支持!无论你是在构建网站、开发应用还是进行数据分析,这个合集都能满足你的需求。你可以通过这些免费API获…

meta-llama/Llama-3.2-1B 微调记录

踩坑: 1.刚开始部署在自己的windows电脑上,semgrep不支持windows ,然后就换了linux服务器 2.服务器没有梯子,huggingface无法访问,模型数据集无法下载 解决方法: 使用huggingface镜像网站下载模型&#xf…

vue 上传组件 vxe-upload 实现拖拽调整顺序

vue 上传组件 vxe-upload 实现拖拽调整顺序&#xff0c;通过设置 drag-sort 参数就可以启用拖拽排序功能 官网&#xff1a;https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…

每天40分玩转Django:实操博客应用

实操博客应用 一、内容概述 模块重要程度主要内容项目初始化⭐⭐⭐⭐创建项目和应用模型设计⭐⭐⭐⭐⭐文章、评论、用户模型视图实现⭐⭐⭐⭐⭐增删改查功能模板开发⭐⭐⭐⭐页面布局和样式用户认证⭐⭐⭐⭐⭐用户登录和权限 二、项目结构 blog_project/ ├── blog/ │ …

NOTEBOOK_11 汽车电子设备分享(工作经验)

汽车电子设备分享 摘要 本文主要列出汽车电子应用的一些实验设备和生产设备&#xff0c;部分会给予一定推荐。目录 摘要一、通用工具&#xff1a;二、测量与测试仪器2.1测量仪器2.2无线通讯测量仪器2.3元器件测试仪2.4安规测试仪2.5电源供应器2.6电磁兼容测试设备2.7可靠性环境…

rust与python互通

互通三件套 rust侧与python互通的三个库&#xff1a; pyo3 pythonize serde pyo3 pyo3跟用Python C API写python扩展有点类似&#xff0c;核心是&#xff1a; #[pymodule] #[pyfunction]两个注解。前者对应Py_InitModule&#xff0c;后者对应PyMethodDef。 下面是其它博…

SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟 这里RTC做了两个定时器一个是12秒,一个是185秒: #define RTCEVT_NUM ((uint8_t) 0x02)//当前定时器事件数#define RTCEVT_12S ((uint32_t) 0x0000002)//定时器1s事件 /*整分钟定时器事件&#xff0c;因为其余的…

PHP基础

PHP代码标记 标准标记&#xff1a;<?php ?> PHP注释 单行&#xff1a;// # 多行&#xff1a;/* */ 两种浏览器输出文本的方式&#xff1a;echo 和 print echo <?php header("Content-Type:text/html;charsetutf-8"); // 输出字符串 ec…