python之垃圾回收机制与流程控制
一、垃圾回收机制
| 在其他的编程语言中,释放和申请内存空间都需要程序员自己写代码申请;但是python可以通过自动回收机制来进行自动管理,让我们一起来看看python中的垃圾回收机制是如何运行的吧QvQ |
| |
| 想要弄清楚垃圾回收机制,首先我们应该来了解引用计数 |
| 1.引用计数reference count |
| 定义:引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。 |
| |
| |
| 1)举例 |
| name = 'jason' 数据值jason身上的引用计数为1 |
| name1 = name 数据值jason身上的引用计数加一 为2 |
| del name1 数据值jason身上的引用计数减一 为1 |
| |
| |
| |
| 2.引用计数的缺点 |
| 1)频繁更新引用计数会降低运行效率 |
| 2)原始的引用计数无法解决 循环引用问题 |
| 3.标记清除 ==>解决循环引用占用内存 |
| |
| l1 = [11, 22] |
| l2 = [33, 44] |
| l1.append(l2) |
| l2.append(l1) |
| del l1 |
| del l2 |
| 当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据 |
| 并给只产生循环引用的数据打上标记 之后一次性清除 |
| 4.分代回收 ==>频繁更新引用计数会降低运行效率损,耗各项资源 |
| |
| |
| 被引用的次数 非常非常多 ==> 正当红艺人 |
| 被引用的次数 还可以 ==> 半当红艺人 |
| 被引用的次数 很少 ==> 过气艺人 |
| 当引用计数=0 时,该艺人将被娱乐圈踢出去,不再成为 艺人 |
| |
| |
二、流程控制
1. 流程控制理论
| 0.流程控制的概念 |
| 控制事物的执行流程 |
| |
| 1.顺序结构 |
| 顺序结构就是让程序按照从头到尾的顺序依次执行每一条 Python 代码,不重复执行任何代码,也不跳过任何代码。 |
| 2.分支结构(选择结构) |
| 选择结构也称分支结构,就是让程序“拐弯”,有选择性的执行代码;换句话说,可以跳过没用的代码,只执行有用的代码。 |
| 3.循环结构 |
| 循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。 |
| |
2.流程控制的必备python知识
| 1.python中 '代码缩进' =>>>表示了代码的'从属关系' |
| 从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的代码(父代码) |
| |
| 2.并非所有代码都可以有 '子代码' |
| 有子代码的关键字: if elif else while等 |
| |
| 3.如果有多行字代码属于同一个父代码,那么这些子代码需要保证相同的缩进量 |
| |
| 4.python中针对缩进量没有具体的要求,但是推荐使用四个空格(windows中tab键) |
| |
| 5.当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定有冒号 |
| |
| 6.相同缩进量的代码 ,按照顺序结构依次执行 |
3.流程控制之分支结构(if else 语句)
if else 语句可以细分为三种形式,分别是 if 语句、if else 语句和 if elif else 语句
(1)单if分支结构
| 1.语法 |
| if 条件: |
| 条件成立之后才会执行的代码快 |
| ps:单if可以借助于流程图理解 |
| 2.举例 |
| username = input('age:') |
| if age >= 18: |
| print('可以登陆游戏') |
(2)if...else...分支结构
| 1.语法 |
| if 条件: |
| 条件成立之后执行的子代码 |
| else: |
| 条件不成立执行的子代码 |
| 2.举例 |
| username = input('age:') |
| if username >= 18: |
| print('可以登陆游戏') |
| else: |
| print('未成年人禁止登陆') |
(3)if...elif...else分支结构
| 1.语法 |
| if 条件1: |
| 条件1成立之后执行的子代码 |
| elif 条件2: |
| 条件1不成立 条件2成立执行的子代码 |
| elif 条件3: |
| 条件1和2都不成立 条件3成立执行的子代码 |
| else: |
| 上述条件都不成立 执行的子代码 |
| |
| ps:中间的elif可以写多个、上述子代码永远只会走一个 |
| 2.举例 |
| score = input('请输入成绩>>>:') |
| score = int(score) |
| if score >= 90: |
| print('优秀') |
| elif score >= 80: |
| print('良好') |
| elif score >= 70: |
| print('一般') |
| elif score >= 60: |
| print('及格') |
| else: |
| print('挂科 交钱重修') |
(4)if的嵌套使用
| if、if else 和 if elif else,这 3 种条件语句之间可以相互嵌套 |
| |
| |
| proof = int(input("输入驾驶员每 100ml 血液酒精的含量:")) |
| if proof < 20: |
| print("驾驶员不构成酒驾") |
| else: |
| if proof < 80: |
| print("驾驶员已构成酒驾") |
| else: |
| print("驾驶员已构成醉驾") |
4.循环结构
| while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块 |
| |
| 1.while条件:条件成立之后执行的子代码(循环体代码) |
| 1)判断条件是否成立 |
| 2)成立=>>执行循环代码体 |
| 3)循环代码体执行完毕=>>再次回到条件判断处,判断条件是否成立 |
| 4)成立=>>执行循环代码体 |
| 5)直到条件不成立=>>结束执行 |
| |
| 2.while条件中的关键字 |
| 1)break |
| while循环体代码一旦执行到 break 会直接结束循环 |
| 2)continue |
| while循环体代码一旦执行到 continue 会结束本次循环 开始下一次循环 |
| |
| |
| while 条件: |
| 循环体代码 |
| else: |
| 循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY