尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
类变量和全局变量的生命周期有什么区别?
Python类变量 vs 全局变量 — 生命周期区别核心一句话全局变量依附模块类变量依附类对象。谁的宿主活着变量就活着宿主被 GC 回收变量跟着销毁。一、全局变量全局变量定义在模块顶层保存在模块对象的__dict__。创建时机模块被第一次导入import的时候执行模块代码创建全局变量。存活期间模块一旦导入成功模块对象会一直驻留内存放到sys.modules缓存。 只要进程没结束模块就不会被回收全局变量一直存在。即使你不再使用模块里的函数模块对象依然在sys.modules全局变量保留。销毁时机正常情况程序进程退出时才销毁极少数场景手动从sys.modules删除模块引用 无任何其他引用才会 GC 回收模块全局变量随之释放实际开发极少这么做特点生命周期很长几乎贯穿整个程序运行期。二、类变量类变量写在class内部、方法之外保存在类对象的__dict__。创建时机执行class定义语句那一刻Python 会创建类对象同时生成类变量。class A: x 10 # 执行class这一行就创建类变量x存活期间只要类对象还有引用类变量就存在。 引用来源可以是类名本身A类的实例其他地方保存的类引用销毁时机当类对象所有引用全部消失GC 把类对象回收类变量跟着一起销毁。如果这个类一直被引用比如全局作用域定义的类类变量就和全局变量一样活到程序结束如果函数内部动态定义 class函数执行完没有外部引用类对象就会被 GC类变量直接释放。示例def create_class(): class Temp: val 99 return Temp() obj create_class() # 只要obj还在Temp类对象就存在Temp.val类变量存活 del obj # obj删除后如果没有任何地方引用Temp类类对象被GCval销毁三、关键差异点宿主不同全局变量宿主是模块对象模块一旦缓存进 sys.modules 很难回收。类变量宿主是类对象类对象满足无引用条件就可以 GC。生命周期灵活性全局变量一旦导入基本常驻内存很难主动释放。类变量可以随类对象销毁而释放。动态创建的类用完即可回收内存可以释放。定义位置带来的常见现象很多类写在模块顶层这时类对象本身就是全局的类变量也会活到程序结束看起来生命周期和全局变量一样。这是很多人容易混淆的点不是类变量天生短命是看类对象的引用是否还存在。实例删除不影响类变量就算所有实例全部 del只要类本身还在类变量依然存活。class A: x 1 a1 A() del a1 print(A.x) # 仍然存在类对象A还在四、对比表表格项目全局变量类变量归属宿主模块对象类对象创建时机模块第一次 import执行模块代码执行class定义语句时创建销毁条件模块从 sys.modules 移除 无引用一般进程结束销毁类对象全部引用消失GC 回收类对象类变量销毁是否可主动回收很难模块会被 sys.modules 缓存可以解除类的所有引用即可被 GC实例删除影响无关删除实例只要类还在类变量不变典型生命周期几乎贯穿整个程序可长可短顶层定义类则常驻动态类用完可回收五、简单总结模块顶层定义的全局变量程序启动导入后一直存活直到程序退出。类变量的生命周期绑定类对象类在模块顶层定义 → 类常驻类变量常驻动态创建局部类 → 引用消失mp.ma-xy.com/blog/9kLm2QpX7a.htmlmp.ma-xy.com/blog/Zx4Tn8Vr1B.htmlmp.ma-xy.com/blog/Qw7Yh3Ns5D.htmlmp.ma-xy.com/blog/Mc2Jv9Kp6E.htmlmp.ma-xy.com/blog/Rt8Bn4Xz0F.htmlmp.ma-xy.com/blog/Hg5Lp1Wq7G.htmlmp.ma-xy.com/blog/Uv3Dm6Yr2H.htmlmp.ma-xy.com/blog/Pa9Kc4Nt8J.htmlmp.ma-xy.com/blog/Se2Qx7Vb5K.htmlmp.ma-xy.com/blog/Fn6Wm1Zp3L.htmlmp.ma-xy.com/blog/Yd4Hr9Cv2M.htmlmp.ma-xy.com/blog/Jk7Tq3Bs8N.htmlmp.ma-xy.com/blog/Ol1Pm5Xw6P.htmlmp.ma-xy.com/blog/Bg8Nc2Vr4Q.htmlmp.ma-xy.com/blog/Xm5Kt7Yd1R.htmlmp.ma-xy.com/blog/Cv9Qp3Ln6S.htmlmp.ma-xy.com/blog/Zr2Wm8Hx4T.htmlmp.ma-xy.com/blog/Nk6Jd1Vp9U.htmlmp.ma-xy.com/blog/Lq4Yt7Bc2V.htmlmp.ma-xy.com/blog/Wp8Rm3Nx5W.htmlmp.ma-xy.com/blog/Td1Kv6Qs9X.htmlmp.ma-xy.com/blog/Hx5Pm2Zr7Y.htmlmp.ma-xy.com/blog/Gc9Bn4Wt1Z.htmlmp.ma-xy.com/blog/Vr3Lq8Jd6A.htmlmp.ma-xy.com/blog/Mp7Yx2Kc5B.htmlmp.ma-xy.com/blog/Ks4Wm9Nv3C.htmlmp.ma-xy.com/blog/Qn1Rt6Bp8D.htmlmp.ma-xy.com/blog/Dz5Jv2Xm7E.htmlmp.ma-xy.com/blog/Sb9Lq4Hr1F.htmlmp.ma-xy.com/blog/Yt3Pm8Kx6G.htmlmp.ma-xy.com/blog/Rc7Wn1Vd4H.htmlmp.ma-xy.com/blog/Bp2Qx9Lm5J.htmlmp.ma-xy.com/blog/Nv6Tr3Yc8K.htmlmp.ma-xy.com/blog/Lm1Jd7Wp2L.htmlmp.ma-xy.com/blog/Xq5Kv9Bn4M.htmlmp.ma-xy.com/blog/Ct8Rm2Hx7N.htmlmp.ma-xy.com/blog/Zp3Yq6Ld1P.htmlmp.ma-xy.com/blog/Gv9Wm4Nc5Q.htmlmp.ma-xy.com/blog/Hk2Jx7Rt8R.htmlmp.ma-xy.com/blog/Md6Pq1Bv3S.htmlmp.ma-xy.com/blog/Tn8Lm5Wx2T.htmlmp.ma-xy.com/blog/Qr4Yp9Kc7U.htmlmp.ma-xy.com/blog/Vx1Jv6Nd3V.htmlmp.ma-xy.com/blog/Kp7Wm2Ht9W.htmlmp.ma-xy.com/blog/Bc5Rq8Lx4X.htmlmp.ma-xy.com/blog/Nm9Yd3Pv1Y.htmlmp.ma-xy.com/blog/Lt2Kx7Bc6Z.htmlmp.ma-xy.com/blog/Xv8Qm4Nr5A.htmlmp.ma-xy.com/blog/Cp1Jd9Wt3B.htmlmp.ma-xy.com/blog/Zk6Lq2Yx8C.htmlmp.ma-xy.com/blog/Gr3Pm7Vc1D.htmlmp.ma-xy.com/blog/Hx9Bn5Kd4E.htmlmp.ma-xy.com/blog/Mv2Tq8Lm6F.htmlmp.ma-xy.com/blog/Tc7Yp1Rx3G.htmlmp.ma-xy.com/blog/Qm4Jv9Wd5H.htmlmp.ma-xy.com/blog/Vp8Km2Nx7J.htmlmp.ma-xy.com/blog/Kd1Lq6Bt9K.htmlmp.ma-xy.com/blog/Bx5Rm3Yc2L.htmlmp.ma-xy.com/blog/Nq9Pv7Hd4M.htmlmp.ma-xy.com/blog/Lm3Jx1Wt6N.htmlmp.ma-xy.com/blog/Xc8Qm5Bv2P.htmlmp.ma-xy.com/blog/Cv4Kd9Nr7Q.htmlmp.ma-xy.com/blog/Zp1Yq6Lx3R.htmlmp.ma-xy.com/blog/Gt7Wm2Vc9S.htmlmp.ma-xy.com/blog/Hk5Jv8Rd1T.htmlmp.ma-xy.com/blog/Mx9Pq3Bn6U.htmlmp.ma-xy.com/blog/Tm2Ld7Wv4V.htmlmp.ma-xy.com/blog/Qc6Yp1Kx8W.htmlmp.ma-xy.com/blog/Vr3Jm9Nt5X.htmlmp.ma-xy.com/blog/Kp8Qv4Bd2Y.htmlmp.ma-xy.com/blog/Bm1Lx6Wc7Z.htmlmp.ma-xy.com/blog/Nv5Rd9Yp3A.htmlmp.ma-xy.com/blog/Lq2Km7Jx8B.htmlmp.ma-xy.com/blog/Xt9Pm4Vc1C.htmlmp.ma-xy.com/blog/Cd3Qv8Bn6D.htmlmp.ma-xy.com/blog/Zx7Lp2Yr5E.htmlmp.ma-xy.com/blog/Gm1Jd6Wv9F.htmlmp.ma-xy.com/blog/Hv4Kq9Nx2G.htmlmp.ma-xy.com/blog/Mp8Rm3Bc7H.htmlmp.ma-xy.com/blog/Tq1Yv5Ld4J.htmlmp.ma-xy.com/blog/Qx6Jm2Wt9K.htmlmp.ma-xy.com/blog/Vc3Pq7Rn1L.htmlmp.ma-xy.com/blog/Km9Ld4Bv6M.htmlmp.ma-xy.com/blog/Bp2Xv8Yc3N.htmlmp.ma-xy.com/blog/Nr5Qm1Jx7P.htmlmp.ma-xy.com/blog/Lv8Kd3Wt2Q.htmlmp.ma-xy.com/blog/Xm4Pq9Bc6R.htmlmp.ma-xy.com/blog/Ct1Rv7Lx5S.htmlmp.ma-xy.com/blog/Zp8Jm2Yd4T.htmlmp.ma-xy.com/blog/Gq3Kv6Nx9U.htmlmp.ma-xy.com/blog/Hm7Ld1Wc5V.htmlmp.ma-xy.com/blog/Mv4Pq8Bt2W.htmlmp.ma-xy.com/blog/Tr9Ym3Jx6X.htmlmp.ma-xy.com/blog/Qc2Kv7Ld1Y.htmlmp.ma-xy.com/blog/Vp6Rm4Nc8Z.htmlmp.ma-xy.com/blog/Kx1Jd9Wv3A.htmlmp.ma-xy.com/blog/Bm5Qq2Yt7B.htmlmp.ma-xy.com/blog/Nc8Lm4Hx1C.htmlmp.ma-xy.com/blog/Lv3Pq9Rd6D.htmlmp.ma-xy.com/blog/Xt7Km2Bc5E.html类连同类变量一起被 GC 回收。如果你想我可以用代码配合gc模块演示看类对象什么时候被垃圾回收。
RELATED

相关推荐

30 Seconds of Code:编写可读性更强的 Redux Reducer 实战指南

30 Seconds of Code:编写可读性更强的 Redux Reducer 实战指南

教程文档 【免费下载链接】30-seconds-of-code Coding articles to level up your development skills 项目地址: https://gitcode.com/gh_mirrors/30/30-seconds-of-code 点击查看 免费下载 本文围绕 30 Seconds of Code 仓库中 React 文章集合里的 redux-readabl…

📅 2026/10/5 10:14:00
OWASP MASTG 最佳实践:Android 内部 IPC 必须使用显式 Intent(MASTG-BEST-0056)

OWASP MASTG 最佳实践:Android 内部 IPC 必须使用显式 Intent(MASTG-BEST-0056)

文档教程网络安全 【免费下载链接】mastg The OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security W…

📅 2026/10/5 10:14:00
Ludusavi v0.28.0 版本发布:游戏存档备份工具的全面升级

Ludusavi v0.28.0 版本发布:游戏存档备份工具的全面升级

Ludusavi v0.28.0 版本发布:游戏存档备份工具的全面升级 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi Ludusavi 是一款专业的游戏存档备份工具,旨在帮助玩家轻松管理和保…

📅 2026/10/5 10:09:00
MORE NEWS

更多资讯

📰

Midscene.js:用自然语言驱动UI自动化,让零编码从口号到落地

Midscene.js 这个名字,第一次听的人大概率会把它当成又一个基于 Playwright 的 UI 自动化测试封装框架。说实话我一开始也这么想,直到我亲手在测试脚本里写下一句中文指令,看着浏览器自己完成了点击、输入、断言这一串动作,我才意…

📰

猪场监控实拍数据集:3万+真实猪只目标,VOC+YOLO双格式开箱即用

简介:本资源是面向农业AI与智能养殖领域的猪只目标检测专用数据集,适用于计算机视觉初学者、算法工程师及智慧畜牧项目开发者,解决猪只识别、数量统计与行为分析等实际落地问题。数据集包含2000张养猪场监控实拍图像,标注3万多个真…

📰

OpenClaw控制台界面定制:不改后端,三天交付企业级AI管理后台

OpenClaw 的控制台默认长什么样,我用四个字评价:够用但糙。能力层面它不差,Agent 管理、任务流、技能配置都在,但真拿去给企业客户做演示,观感立刻露怯:Logo 不够高级、菜单层级不清晰、任务状态的颜色跟企…

📰

定长滑动窗口:算法、滤波与协议的底层逻辑

1. 为什么单独把"定长"拎出来讲滑动窗口 滑动窗口这四个字,你在算法题、信号处理、网络协议、甚至硬件设计里都能撞见。但很多人在初学阶段最容易忽略的,恰恰是"定长"这个限定词。同样是滑动窗口,定长和变长的解题思路完…

📰

UFS 3.1协议栈详解:从eMMC到全双工存储的性能跃迁

去年调一个UFS 3.1平台的随机读性能问题,现象很典型:顺序读能到1800MB/s,一旦切成4K随机读,IOPS直接掉到一万出头,dmesg里还开始刷ufshcd timeout。那几天我基本住在实验室,用协议分析仪抓UPIU,…

📰

Optisystem数据导出与Matlab读取:光通信仿真联合处理全攻略

搞光通信仿真的朋友,早晚会撞上这么一堵墙:Optisystem里链路调好了,眼图、光谱、星座图都挺漂亮,可一旦涉及到更细致的信号处理、误码率统计或者跟课题算法做对接,光靠Optisystem自带的那几个可视化模块根本不够用。尤…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬