python安装及变量名介绍详解
前言把「安装」和「变量名」放在一篇里讲是因为它们对应初学者的两个阶段装好解释器之后你写下的第一行代码大概率是x 1或者name 张三而这一行里就包含了本篇文章要讲的核心概念——变量名。关于变量名最常见的误解是「变量是一个装数据的盒子」。这个比喻在 Python 里会把你带偏。更准确的说法是变量名是一个贴在对象上的标签name binding赋值语句做的是「把名字绑定到某个对象」而不是「把值复制进一个盒子」。理解了这个模型后面遇到a b之后改b、is和的区别、可变默认参数这些坑就都有了解释。另一个误解是「变量名必须声明类型」。Python 是动态类型语言变量名本身没有类型类型属于对象。同一个名字先后绑定到整数和字符串是完全合法的。本文先快速过一遍安装要点再详细讲变量名的构成规则、绑定语义和命名约定。文中写法均以 Python 3 为准Python 2.7 已于 2020 年 1 月 1 日停止维护如果看到print x这类写法说明那是旧资料。一、安装装完之后确认名字解析安装本身在前面的文章里讲过这里只强调与「名字」相关的一点装完之后确保python这个名字能被正确解析否则后面所有示例都无从下手。# 需要 Python 3.xpython --versionpython -c import sys; print(sys.executable)第二行会打印解释器的真实路径。如果这个路径里含有WindowsApps说明你命中的是 Windows 的应用执行别名占位符不是真解释器。二、变量名的构成规则Python 里变量名属于标识符identifier必须满足首字符是字母或下划线不能是数字其余字符可以是字母、数字或下划线区分大小写name、Name、NAME是三个不同的名字不能与关键字keyword重名。# 适用于 Python 3.8name ok # 合法_name ok # 合法前导下划线有约定含义name2 ok # 合法数字可以出现在非首位用户 张三 # Python 3 中合法标识符支持 Unicode 字母2name bad # SyntaxErrorclass bad # SyntaxErrorclass 是关键字第四行值得说明Python 3 的标识符按 Unicode 规则识别PEP 3131所以中文等非 ASCII 字母在语法上是允许的。允许不等于推荐——混用中英文标识符会让代码难以搜索和维护除非有充分理由否则还是用英文。想程序化地判断一个字符串能不能当变量名标准库提供了工具# 适用于 Python 3.9import keywordprint(keyword.iskeyword(class)) # Trueprint(class.isidentifier()) # True语法上是合法标识符print(2a.isidentifier()) # Falseprint(keyword.kwlist[:5]) # 前几个关键字print(keyword.softkwlist) # 软关键字需要 Python 3.9注意isidentifier()只判断形状是否合法它不管这个形状是不是关键字。所以class.isidentifier()返回True而class其实是不能用的。两者要配合keyword.iskeyword()一起判断。「软关键字」soft keyword是另一类特殊名字比如match、case、type、_。它们只在特定语法位置被当作关键字平时可以正常当变量名用。三、赋值做了什么名字绑定而非装箱# 适用于 Python 3.8a [1, 2, 3]b ab.append(4)print(a) # [1, 2, 3, 4]print(a is b) # Trueb a没有复制列表只是让b和a指向同一个列表对象。改其中一个名字所指向的对象内容通过另一个名字看也变了。要判断两个名字是不是指向同一个对象用is要判断两个对象的值是否相等用。# 适用于 Python 3.8x [1, 2, 3]y [1, 2, 3]print(x y) # True值相等print(x is y) # False不是同一个对象至于小数和字符串is的结果涉及实现细节不能当作值比较来用。CPython 会缓存 -5 到 256 的小整数所以两个100常常is为真两个1000则不一定——这是实现细节不要依赖。赋值还有几种便捷写法# 适用于 Python 3.8p, q 1, 2 # 并行赋值p, q q, p # 交换右边先构造元组first, *rest [1, 2, 3, 4] # 星号收集print(first, rest) # 1 [2, 3, 4]head, tail ab # 序列解包长度必须匹配最后一行如果长度不匹配会抛ValueError这是解包最常见的报错来源。四、命名约定语法规则只管「能不能用」命名约定管「该不该这么用」。Python 社区的默认约定写在 PEP 8 里。对象约定示例变量、函数、模块小写 下划线snake_caseuser_name、parse_file类每个单词首字母大写CapWordsHttpClient常量全大写 下划线MAX_RETRY内部使用单个前导下划线_cache与关键字冲突时尾部加下划线class_、id_特殊方法前后双下划线__init__、__len__几个约定的实际含义单个前导下划线表示「这是内部实现」from module import *时会跳过它。它是约定不是访问控制。单个尾随下划线是避开关键字的标准技巧比自造缩写更好读。双前导下划线名字修饰name mangling在类体里会被解释器改写成带类名前缀的形式用于避免子类意外覆盖。它不加密也不是访问控制。前后双下划线的名字由 Python 保留自己不要随意发明这类名字。五、不要覆盖内置名Python 有一批内置名字比如list、dict、str、id、type、sum、input。它们不是关键字语法上可以被覆盖但覆盖之后会出大问题。# 适用于 Python 3.8# ❌ 不要把内置名当变量list [1, 2, 3]# 之后再想用 list(...) 构造列表就会被这个变量挡住# 适用于 Python 3.8# ✅ 换个名字numbers [1, 2, 3]total sum(numbers)同样地id、type、str、open都不要拿来当变量名或函数名。常见坑点以为b a是复制❌ 写b a后修改b发现a也变了怀疑是「bug」。✅ 这是名字绑定两个名字指向同一个对象。要复制用a.copy()浅拷贝或copy.deepcopy(a)深拷贝。用is比较数值❌ 写if score is 100:小数值时碰巧成立换成大数值或浮点数就失灵。✅is只用来判断「是不是同一个对象」数值判断一律用。变量名前导数字❌ 写2name x直接SyntaxError。✅ 数字不能开头改成name2或second_name。变量名与关键字同名❌ 写class A、lambda 1报语法错误。✅ 换成cls、class_。如果只是想检查某个词是不是关键字用keyword.iskeyword()。覆盖内置名❌ 写list [...]或id 5之后的代码里list、id全都失灵。✅ 换词汇比如numbers、record_id。命名前先在心里过一遍「这个名字是不是内置的」。大小写混用导致两个名字❌ 定义Total 0后来又写total 1报NameError。✅ 统一命名风格常量用全大写变量用全小写加下划线。误以为中文变量名不能用❌ 看到报错就断定「Python 不支持中文变量名」。✅ Python 3 支持 Unicode 标识符中文名语法上合法。但为了可维护性默认还是用英文命名。认为前导下划线能阻止访问❌ 写self._secret以为外部访问不到。✅ 下划线是约定外部依然能访问。要严格限制用属性封装双前导下划线也只是名字修饰不是访问控制。总结问题结论变量名能包含什么字母、数字、下划线首字符不能是数字能是关键字吗不能区分大小写吗区分变量有类型吗没有类型属于对象b a是复制吗不是是让两个名字指向同一对象怎么比较值用同一性用is命名风格变量函数snake_case类CapWords常量UPPER_CASE安装解决「有没有解释器」变量名解决「怎么给数据起名字」。把变量名理解成标签而不是盒子是读懂 Python 赋值、传参、拷贝这一整套行为的第一步。

相关新闻

SonarQube 7.9 部署与实战避坑指南:兼容JDK8/PostgreSQL11的稳定方案

SonarQube 7.9 部署与实战避坑指南:兼容JDK8/PostgreSQL11的稳定方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 12:01:50 阅读更多 →
jQuery 实现商品管理增删改查与数据统计实战

jQuery 实现商品管理增删改查与数据统计实战

最近整理旧项目时,翻出一个用 jQuery 写过的商品列表管理页面,功能很朴素:基于 jQuery 做商品数据的增删改查,再配上几组统计数字。但就是这样一个经典场景,十几年了还在各种后台系统里反复出现,也几乎每天…

2026/10/13 12:01:50 阅读更多 →
CWRU轴承故障信号STFT与CWT时频分析实战指南

CWRU轴承故障信号STFT与CWT时频分析实战指南

简介:本资源是一份面向机械故障诊断、信号处理与智能运维方向研究者及研究生的凯斯西储大学轴承故障数据集时频分析实践指南,聚焦振动信号的深度特征提取与故障辨识方法。文档系统讲解短时傅里叶变换(STFT)与连续小波变换&#xf…

2026/10/13 12:01:50 阅读更多 →

最新新闻

打破园区数据孤岛:统一数字平台与智慧园区落地实践

打破园区数据孤岛:统一数字平台与智慧园区落地实践

简介:面向园区管理者、物业运营方与智慧城市方案设计人员,这份《华为智慧园区通用场景解决方案》以“平台生态”为主线,针对管理对象多、运营成本高、服务体验差、应用重复建设等痛点,给出分层分场景的数字化转型路径,…

2026/10/13 12:41:45 阅读更多 →
Elasticsearch集群搭建实战:节点角色、核心配置与健康检查

Elasticsearch集群搭建实战:节点角色、核心配置与健康检查

1. 先搞明白:这个集群到底要解决什么问题我最初接触ELK的时候,对Elasticsearch集群的理解特别肤浅:以为把ES多装几台,启动起来就算集群了。结果在测试环境里把三台机器都配成了默认角色,数据全挤在一台机器的磁盘上&am…

2026/10/13 12:41:45 阅读更多 →
Java Word占位符替换:Apache POI与docx4j选型及跨run处理避坑指南

Java Word占位符替换:Apache POI与docx4j选型及跨run处理避坑指南

1. 为什么“替换Word占位符”这件事,远比想象中麻烦做过Java后端的人,几乎都绕不开一个需求:生成一份格式规范的Word文档。合同、通知书、报表、简历、项目验收单,业务方给过来的永远是一个排版精美的.docx模板,里面写…

2026/10/13 12:41:45 阅读更多 →
SAP-PP替代物料完全手册:策略、配置与MRP消耗顺序避坑指南

SAP-PP替代物料完全手册:策略、配置与MRP消耗顺序避坑指南

简介:这份手册面向SAP-PP模块顾问、生产计划员及物料管理相关人员,系统讲解替代物料与后继物料的配置逻辑与实操方法,帮助解决生产过程中物料短缺、切换与按比例消耗等常见难题。资源包内含1个docx文档,大小约871KB,以…

2026/10/13 12:41:45 阅读更多 →
测试工程师面试题:底层能力分析与高效准备指南

测试工程师面试题:底层能力分析与高效准备指南

如果把测试工程师的面试题当成一份题库来背,基本就输了一半。这几年我接触过不少准备面试的朋友,也看过很多测试工程师/测试开发岗位的面试题合集,大家普遍的做法是刷题、背答案、记八股,结果面试官换一种问法,立刻就原…

2026/10/13 12:41:45 阅读更多 →
鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

简介:《鲲鹏云大数据实验docx》是一份面向云计算与大数据初学者的实验报告,完整记录了在华为云鲲鹏环境下从零搭建Hadoop集群的全过程。报告从购买弹性云服务器与对象存储服务开始,介绍如何获取AK/SK认证密钥,并逐步完成OpenJDK安…

2026/10/13 12:40:44 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →