垃圾回收机制
"""
有一些语言 内存空间的申请和释放都需要程序员自己写代码才可以完成
但是python却不需要 通过垃圾回收机制自动管理
"""
1. 引用计数
name = 'jason' 数据值jason身上的引用计数为1
name1 = name 数据值jason身上的引用计数加一 为2
del name1 数据值jason身上的引用计数减一 为1
当数据值身上的引用计数为0的时候 就会被垃圾回收机制当做垃圾回收掉
当数据值身上的引用计数不为0的时候 永远不会被垃圾回收机制回收
2. 标记清除
主要针对循环引用问题
l1 = [11, 22] # 引用计数为1
l2 = [33, 44] # 引用计数为1
l1.append(l2) # l1 = [11, 22, l2列表] 引用计数为2
l2.append(l1) # l2 = [33, 44, l1列表] 引用计数为2
del l1 # 断开变量名l1与列表的绑定关系 引用计数为1
del l2 # 断开变量名l2与列表的绑定关系 引用计数为1
当内存占用达到临界值的时候,程序会自动停止,然后扫描程序中所有的数据
并且只产生循环引用的数据打上标记 之后一次性清除
3. 分代回收
垃圾回收机制的频繁运行也会损耗各项资源
新生代、青春代、老年代(越往下检测频率越低)
流程控制理论
流程控制: 控制事物的执行流程
事物执行流程总共可以分为三种
1. 顺序结构
从上往下依次执行,我们之前所编写的代码都属于该结构
2. 分支结构
事物的执行会根据条件的不同做出不同的执行策略
3. 循环结构
事物的执行会根据某个条件出现重复
PS:在代码的世界里,很多时候可能会出现三者混合
提示:作为小白,在学习流程控制的时候,建议做到代码和图形的结合
顺序结构图
分支结构图
循环结构图
流程控制必备知识
1. python中使用代码的缩进来表示代码的从属关系
从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的
2. 并不是所有的代码都可以拥有缩进的代码(子代码),例如if关键字
3. 如果有多行子代码属于同一个父代码,那么这些子代码需要保证相同的缩进量
4. python中针对缩进量没有具体的要求,但是推荐使用四个空格(windows中tab键)
5. 当某一行 代码需要编写子代码的时候,那么这一行代码的结尾肯定需要冒号
6. 相同缩进量的代码彼此之间平起平坐,按照顺序结构依次执行