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

python变量详解

好,这一题是Python 入门到进阶都绕不开的核心
我会按“是什么 → 怎么用 → 底层原理 → 易错点 → 面试/实战总结”给你一篇真正把变量讲透的说明。


Python 变量详解


一、Python 中的变量是什么?

一句话定义:

Python 变量本质上是“对象的引用”,而不是装数据的盒子。

a=10

含义是:

  • 创建一个整数对象10
  • 变量a指向(引用)这个对象

二、变量的创建与赋值

1️⃣ 基本赋值

x=5name="Alice"

📌Python 不需要声明类型


2️⃣ 动态类型特性

a=10a="hello"
  • 合法
  • 变量类型随对象改变

3️⃣ 多重赋值

a=b=c=0

⚠️ 注意:都指向同一个对象


4️⃣ 解包赋值(非常常用)

x,y=1,2a,b=b,a# 交换变量

三、变量命名规则

合法规则

  • 字母、数字、下划线
  • 不能以数字开头
  • 区分大小写
  • 不能使用关键字
importkeyword keyword.kwlist

命名规范(PEP 8)

  • 变量 / 函数:snake_case
  • 常量:UPPER_CASE
total_score=90MAX_SIZE=100

四、变量与对象的关系(重点)

1️⃣ 查看对象身份

a=10b=aid(a)==id(b)# True

👉ab指向同一个对象


2️⃣ 可变对象 vs 不可变对象

不可变对象
  • int
  • float
  • str
  • tuple
a=10a+=1# 新对象

可变对象
  • list
  • dict
  • set
lst=[1,2]lst.append(3)# 原对象修改

五、变量修改的本质差异(高频坑)

示例对比

a=10b=a a+=1
  • a指向新对象11
  • b仍指向10
lst1=[1,2]lst2=lst1 lst1.append(3)
  • lst1lst2都变了

六、作用域(Scope)

1️⃣ LEGB 规则

查找顺序:

Local → Enclosing → Global → Built-in

2️⃣ global / nonlocal

x=10deffunc():globalx x=20
defouter():x=10definner():nonlocalx x=20

七、变量删除

a=10dela
  • 删除的是引用
  • 对象是否销毁由 GC 决定

八、浅拷贝 vs 深拷贝(变量相关)

importcopy copy.copy(obj)# 浅拷贝copy.deepcopy(obj)# 深拷贝

📌 与“可变对象引用”强相关


九、常见误区总结(非常重要)

❌ 1. Python 变量是盒子

错,是引用

❌ 2. = 是拷贝

错,是绑定

❌ 3. 函数参数是引用传递

准确说法:对象引用传递(call by object reference)


十、面试一句话总结

Python 变量本质是对象引用,赋值只是绑定关系的改变,不可变对象会产生新对象,而可变对象在原地修改。


十一、速记口诀

名不存值,名指对象;
可变改自身,不可变换新家。


如果你愿意,我可以下一步直接带你:

你是Python 新手,还是准备面试 / 写工程

http://www.jsqmd.com/news/333876/

相关文章:

  • linux 中sed命令对指定步长行进行处理
  • Anthropic推出Claude Cowork插件功能增强任务自动化能力
  • 99999999999999
  • [STM32L5] STM32L562E-DK硬件和DEMO程序演示
  • 【重磅】正规的腾讯广告排行榜单 - 服务品牌热点
  • 【艾思科蓝推荐】2026 计算机科学与技术/电子与通信/人工智能领域国际学术会议汇总 | 2026年3月学术会议征稿信息速览 | EI/Scopus稳定检索,高录用,适合硕博毕业/职称评审/项目结题
  • plc教程系列篇(二),plc教程之5大编程语言类型介绍
  • # Vue3 音频标注插件 wavesurfer
  • 探索Matlab/Simulink三闭环直流电机调速系统仿真
  • 写给技术管理者的低代码手册系列文章(1)——从软件工程视角理解低代码的价值、边界与演进路径
  • 【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患
  • LangChain学习2 完成一个mysql数据库管理的示例agent
  • 高压直流输电在线监测Matlab仿真模型及GUI界面设置参数设计
  • [STM32L5] 【STM32L562E-DK试用】第4辑:板载蓝牙的体验
  • 2000-2024年 上市公司异质性机构投资者数据+Stata代码
  • 开源免焊接UART短信转发终端:实现不依赖流量的数据传输
  • 9999999999999999
  • 低代码:让钣金工厂的 “钢铁拼图” 跑赢数字化时代
  • 如何设计一个可扩展的短信发送队列模块
  • 现代互联网安全的基石: SSL/TLS技术介绍
  • 从外包菜鸟到高手,XinServer 是我的秘密武器
  • SSM毕设项目推荐-基于Java+MySQL+SSM商铺租赁管理系统设计与实现基于ssm的商铺租赁管理系统的设计与实现【附源码+文档,调试定制服务】
  • [STM32L5] 【STM32L562E-DK试用】第3辑:板子Flash芯片测试(OSPI)
  • 写论文省心了!更贴合本科生的AI论文软件,千笔·专业论文写作工具 VS 灵感风暴AI
  • _fsm和_vm文件
  • 【Linux命令大全】008.磁盘维护之swapon命令(实操篇)
  • AI视角下:非农周财经事件与保证金调整的深度剖析
  • 自贡市英语雅思培训机构推荐 2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 【Linux命令大全】008.磁盘维护之symlinks命令(实操篇)
  • 深度测评10个降AIGC工具 千笔·降AIGC助手解决论文AI率难题