当前位置: 首页 > 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,虽然不报错,但读起来像在耍人。取名字是门艺术,别让别人看到代码后想锤人。

代码是给人看的,标识符是程序员浪漫的语言。一份好代码,从一个好名字开始。

相关文章:

​Python 标识符是啥?​

Python 的标识符就是我们写代码时用来给变量、函数、类等取名字的东西。 你写的 my_variable 是个标识符, 定义的 add_numbers 函数名也是个标识符, 甚至你写的 Cat 类名,也是标识符。 一句话总结:标识符就是代码里给“东西”起…...

视频及JSON数据的导出并压缩

npm下载安装 jszip 和 file-saver 这两个库来实现文件的压缩和保存功能: npm install jszip npm install file-saver 导入依赖库: import JSZip from jszip; import { saveAs } from file-saver; 方法实现: batchDownload() {const zip…...

VScode使用教程(菜鸟版)

目录 1.VScode是什么? 2.VScode的下载和安装? 2.1下载和安装 下载路径: 安装流程: 一、点击【Download for Windows】 二、等一小会儿的下载,找到并双击你下载好的.exe文件,开始进入安装进程 三、点…...

【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:Grafana 安全漏洞 (CVE-2024-9264)漏洞编号:CVE-2024-9264 | CNNVD-202410-1891漏洞类型:命令注入、本地文件包含漏洞威胁等级:…...

Android AOSP 源码中批量替换“phone“为“tablet“的命令详解

我来帮你写一篇关于这条命令的分析博客。 Android 项目中批量替换"phone"为"tablet"的命令详解 前言 在 Android 开发中,有时我们需要批量修改资源文件中的某些文本内容。今天我们来分析一条结合了 grep 和 sed 的强大命令,该命令用于将项目中的 “ph…...

基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文

标题:基于 JavaWeb(SSMMySQL)问卷调查管理系统设计与实现 内容:1.摘要 摘要:本文介绍了一个基于 JavaWeb(SSMMySQL)的问卷调查管理系统的设计与实现。该系统旨在为用户提供一个高效、便捷的问卷调查工具,帮…...

域内用户枚举与密码喷洒与密码爆破

域控:192.168.72.163 攻击者:192.168.72.162 域:hacker.com 用户枚举 as-rep 回复状态判断域用户 用户存在且启用:KDC_ERR_PREAUTH_REQUIRED (需要额外的预认证) 用户存在但禁用:KDC_ERR_CLIENT_REVOKED NT Stat…...

DIY 集合求并集(union)运算的代码 ← Python

【算法分析】 已知 Python 提供了求并集运算的函数 union。代码示例如下; >>> s1{1,2,3} >>> s2{2,3,7,1,9} >>> s1.union(s2) {1, 2, 3, 7, 9} >>> 不过,知其然也要知其所以然。 本例自己 DIY 集合求并集(union…...

Redis bitmaps 使用

应用场景: 记录id为 1 的用户,2024年12月签到情况,并统计; 记录 1号签到 zxys-redis:0>setbit 1:202412 1 1 记录 2号签到 zxys-redis:0>setbit 1:202412 2 1 记录 3号未签到 zxys-redis:0>setbit 1:202412 3 0 …...

vue深层数据响应的问题

vue版本为v2.16 数据是数组数据,且初始数据为空; 当接口返回的数据直接赋值到字段之后导致深层的子项数据无法被监听到; 数据结构如下: //数据结构//初始化数据 data:[] 接口返回数据 resData:[{id:"",name:"&quo…...

解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南

问题描述 在使用Vue.js构建的单页应用(SPA)中,特别是像ruoyi-vue这样的框架,如果启用了HTML5历史记录模式进行路由管理,那么用户直接访问子路径或刷新页面时可能会遇到404错误。这是因为当用户尝试访问一个非根路径时…...

项目计划表如何制作?使用甘特图制作项目计划表的步骤

在项目管理中,项目计划是项目的核心要素,它详细记录了项目任务详情、责任人、时间规划以及所需资源。 这份计划不仅为项目推进提供指引,更是控制范围蔓延、争取更多支持的有力工具。 然而,如同项目管理的其他环节一样&#xff0…...

Flutter-底部分享弹窗(showModalBottomSheet)

showModalBottomSheet 构造函数的样式 Future<T?> showModalBottomSheet<T>({required BuildContext context, // 上下文对象&#xff0c;通常是当前页面的上下文bool isScrollControlled false, // 控制底部弹窗的大小&#xff0c;如果为…...

初学stm32 --- 时钟配置

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

LeetCode:226.翻转二叉树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;226.翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 …...

(css)鼠标移入或点击改变背景图片

(css)鼠标移入或点击改变背景图片 html <div class"mapTip"><divv-for"(item, index) of legendList":key"index"class"mapTipOne":class"{ active: change index }"click"legendHandle(item, index)"…...

Unbuntu下怎么生成SSL自签证书?

环境&#xff1a; WSL2 Unbuntu 22.04 问题描述&#xff1a; Unbuntu下怎么生成SSL自签证书&#xff1f; 解决方案&#xff1a; 生成自签名SSL证书可以使用OpenSSL工具&#xff0c;这是一个广泛使用的命令行工具&#xff0c;用于创建和管理SSL/TLS证书。以下是生成自签名…...

OpenGL ES 03 加载3张图片并做混合处理

OpenGL ES 02 加载3张图片并做混合处理 什么是纹理单元纹理单元的作用使用纹理单元的步骤详细解释加载图片并绑定到到GPU纹理单元采样器的设置1.设置采样器变量的纹理单元编号&#xff0c;目的是为了告诉纹理采样器&#xff0c;从哪个纹理单元采集数据2.如果你没有显式地设置采…...

深度学习-74-大语言模型LLM之基于API与llama.cpp启动的模型进行交互

文章目录 1 大模型量化方法1.1 GPTQ(后训练量化)1.2 GGUF(支持CPU)1.3 AWQ(后训练量化)2 llama.cpp2.1 功能2.1.1 Chat(聊天)2.1.2 Completion(补全)2.2 运行开源LLM2.2.1 下载安装llama.cpp2.2.2 下载gguf格式的模型2.2.3 运行大模型3 API访问3.1 调用补全3.2 调用聊天3.3 提取…...

PyTorch 2.0 中设置默认使用 GPU 的方法

PyTorch 2.0 中设置默认使用 GPU 的方法 在 PyTorch 2.0 中&#xff0c;默认情况下仍然是使用 CPU 进行计算&#xff0c;除非明确指定使用 GPU。torch.set_default_device 是 PyTorch 2.0 引入的新功能&#xff0c;用于设置默认设备&#xff0c;使得所有后续张量和模块在没有明…...

遇到戴氏庄辉兰老师,是孩子英语学习的幸运

作为家长&#xff0c;一直为孩子英语焦虑&#xff0c;直到遇见戴氏庄辉兰老师&#xff0c;才真正放下心来。庄老师教学水平高、责任心强、有爱心、懂教育&#xff0c;不仅教知识&#xff0c;更培养兴趣和习惯。她课堂生动有趣&#xff0c;把枯燥知识点变得简单易懂&#xff0c;…...

动力电池技术迭代:从能量密度到系统集成的多维竞争

1. 动力电池行业的“肌肉”意味着什么最近&#xff0c;行业里关于宁德时代又推出新产品的消息传得沸沸扬扬。作为在这个行业里摸爬滚打了十几年的老兵&#xff0c;每次看到这样的新闻&#xff0c;我的第一反应不是“又来了”&#xff0c;而是“这次他们想解决什么问题&#xff…...

Android应用安全左移实践:Kiuwan SAST集成与漏洞修复指南

1. 项目概述&#xff1a;为什么Android应用安全需要“左移”&#xff1f;在移动应用开发这个行当里干了十几年&#xff0c;我见过太多团队在安全问题上“亡羊补牢”的场景。往往是应用上线后&#xff0c;被安全团队或第三方扫描工具揪出一堆高危漏洞&#xff0c;然后整个团队进…...

ROFL-Player:基于C的多版本英雄联盟回放文件解析技术实现

ROFL-Player&#xff1a;基于C#的多版本英雄联盟回放文件解析技术实现 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player ROFL-Player是一款…...

如何智能批量添加EXIF水印:摄影师的自动化参数标注解决方案

如何智能批量添加EXIF水印&#xff1a;摄影师的自动化参数标注解决方案 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 摄影爱好者和专业摄影师都面…...

在ARM架构Windows上,用Hyper-V快速部署Ubuntu Server 22.04 LTS

1. 为什么选择ARM架构WindowsHyper-V跑Ubuntu&#xff1f; 最近两年ARM架构的Windows设备越来越多了&#xff0c;像Surface Pro X这样的设备用起来确实轻便省电。但很多开发者发现&#xff0c;想在ARM电脑上跑个Linux环境测试代码&#xff0c;总会遇到各种兼容性问题。我自己用…...

从“记录系统”到“智能系统” From “System of Record” to “System of Intelligence” —— A16Z

From “System of Record” to “System of Intelligence” 从“记录系统”到“智能系统” https://www.a16z.news/p/from-system-of-record-to-system-of Here’s one way you can think about system of record stickiness: For a long time, the valuable part of social…...

深度解析m4s-converter:B站缓存视频无损转换架构设计与性能优化

深度解析m4s-converter&#xff1a;B站缓存视频无损转换架构设计与性能优化 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容版权日益严…...

肿瘤样本SV分析避坑指南:Delly somatic检测中那些容易忽略的过滤与注释细节

肿瘤样本SV分析避坑指南&#xff1a;Delly somatic检测中那些容易忽略的过滤与注释细节 在癌症基因组学研究中&#xff0c;结构变异&#xff08;SV&#xff09;的准确检测对于理解肿瘤发生机制和寻找潜在治疗靶点至关重要。Delly作为一款广泛使用的SV检测工具&#xff0c;其som…...

ARM GIC中断控制器架构与寄存器编程详解

1. ARM GIC中断控制器架构概述 中断控制器是现代处理器系统中至关重要的组件&#xff0c;它负责协调和管理来自各种外设的中断请求。ARM架构的通用中断控制器(GIC)经过多代演进&#xff0c;目前GICv3/GICv4已成为主流实现。GIC的核心功能包括中断优先级管理、中断分发、虚拟化支…...