​Python 标识符是啥?​

news2024/12/20 14:14:34

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.coloradmin.cn/o/2262755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 动画深度解析

一、Android 动画发展历程与核心类型总览 自 Android 诞生起,动画系统便不断推陈出新。早期存在补间动画(Tween Animation)与帧动画(Frame Animation),而 Android 3.0 重磅引入属性动画(Proper…

Linux-ubuntu之主频和时钟配置

Linux-ubuntu之主频和时钟配置 一,主频二,其它时钟配置1.PLL2和PLL3的PFD0-3设置2.AHB_CLK_ROOT3.IPG 和 PERCLK时钟 三,总结 一,主频 24MHz 晶振为内核和其它外设提供时钟源,经电路后到PLL1变为996MHZ,再…

Autosar入门_汽车电子控制器

上一篇 | 返回主目录 汽车电子控制器 1 汽车电子控制器定义2 从功能角度来看构成2.1 车门控制器简单示例2.1.1 解锁过程分析2.1.2 无框车窗短降2.1.3 下电控制电耗2.2 控制器几大基本功能 3 从硬件构成角度看构成3.1 芯片类别说明3.2 芯片与功能联系 1 汽车电子控制器定义 汽…

变压器“变压”和“变流”说明

变压器可以改变交流电压的大小,也可以改变交流电流的大小。 改变交流电压 变压器既可以升高交流电压,也能降低交流电压。在忽略电能损耗的情况下,变 压器电压U、二次电压U2与烧组匝数N、二次烧组匝数的关系为: n称为匝数比或电…

初学stm32 --- 时钟配置

目录 stm32时钟系统 时钟源 (1) 2 个外部时钟源: (2)2 个内部时钟源: 锁相环 PLL PLLXTPRE: HSE 分频器作为 PLL 输入 (HSE divider for PLL entry) PLLSRC: PLL 输入时钟源 (PL…

[机器学习]XGBoost(3)——确定树的结构

XGBoost的目标函数详见[机器学习]XGBoost(2)——目标函数(公式详解) 确定树的结构 之前在关于目标函数的计算中,均假设树的结构是确定的,但实际上,当划分条件不同时,叶子节点包含的…

常用命名总结

命名在编程中是非常重要的,它直接影响到代码的可读性、可维护性和开发效率。一个好的命名能够让代码更加直观、易于理解和修改,反之,不恰当的命名可能导致混乱、错误和难以调试的问题。以下是一些关于命名的最佳实践和原则: 1. 简…

AutoMQ 流表一体新特性 Table Topic 发布: 无缝集成 AWS S3 Table 和 Iceberg

超越共享存储:使用 Apache Iceberg 中的 AutoMQ Table Topic 实现流处理与分析的统一 自 2023 年底官宣以来,AutoMQ 成功地将 Apache Kafka 从“Shared Nothing architecture”转变为“Shared Storage architecture”,这为京东、知乎、小红书…

maven使用Dependency-Check来扫描安全漏洞

在现代软件开发中,使用开源库和第三方依赖项已成为常态。然而,这些依赖项可能包含已知的安全漏洞,给应用程序带来潜在的风险。为了解决这个问题,OWASP Dependency-Check 应运而生。本文将介绍 OWASP Dependency-Check 的功能、安装…

#渗透测试#红队全栈 powshell基础使用

声明! 学习视频来自B站up主 泷羽sec,任何违法事件与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!! 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…

Qt:QMetaObject::connectSlotsByName实现信号槽自动关联

简介 在Qt中,QMetaObject::connectSlotsByName 是一个便利的方法,它可以根据对象的对象名(objectName)自动将信号和槽连接起来。但是,要使用这个方法,必须确保: 1 控件(如按钮&…

《算法ZUC》题目

判断题 ZUC算法LFSR部分产生的二元序列具有很低的线性复杂度。 A.正确 B.错误 正确答案A 单项选择题 ZUC算法驱动部分LFSR的抽头位置不包括( )。 A.s15 B.s10 C.s7 D.s0 正确答案C 单项选择题 ZUC算法比特重组BR层主要使用了软件实现友好的…

maven项目中对不同目录下的同包同名类的引用情况整理

说明 maven项目,允许在不同目录中出现相同包名和相同类名,不会出现冲突,包括: java目录test目录依赖中目录 这里就用Hutool.class类中的一个常量做测试,如图 好奇同包同名类同时存在时,会加载哪个类 Syst…

【UE5 C++课程系列笔记】10——动态单播/多播的基本使用

目录 概念 申明动态委托 一、DECLARE_DYNAMIC_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 绑定动态委托 一、BindDynamic 二、AddDynamic 三、RemoveDynamic 执行动态委托 ​一、Execute 二、ExecuteIfBound 三、IsBound 四、Broadcast 动态单播使用示…

Redis篇-19--运维篇1-主从复制(主从复制,读写分离,配置实现,实战案例)

1、概述 Redis的主从复制(Master-Slave Replication)是一种数据冗余机制,它允许将一台Redis服务器的数据复制到其他Redis服务器。在主从复制中,有一台主服务器(Master)和一个或多个从服务器(Sl…

【ORACLE】一个允许关键字作为别名所引起的语法歧义场景

前言 最近在看SQL语法解析器,发现了antlr4提供的PlSql语法树存在一个BUG,然后我顺着这个BUG,构造了一条SQL,在ORACLE执行,如下 然后神奇的事情出现了,这个查询竟然没有返回行!t1表左关联t2&…

【前端】Jquery拍照,通过PHP将base64编码数据转换成PNG格式,并保存图像到本地

目录 一、需求 二、开发语言 三、效果 四、业务逻辑: 五、web端调用摄像头 六、示例代码 1、前端 2、后端 一、需求 web端使用jquery调用摄像头拍照,并使用PHP把base64编码转换成png格式图片,下载到本地。 由于js不能指定图片存储的…

本地摄像头视频流在html中打开

1.准备ffmpeg 和(rtsp-simple-server srs搭建流媒体服务器)视频服务器. 2.解压视频流服务器修改配置文件mediamtx.yml ,hlsAlwaysRemux: yes 3.双击运行服务器。 4,安装ffmpeg ,添加到环境变量。 5.查询本机设备列表 ffmpeg -list_devices true -f dshow -i d…

机器情绪及抑郁症识别算法(六)

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

34. Three.js案例-创建球体与模糊阴影

34. Three.js案例-创建球体与模糊阴影 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数对象,包…