垃圾回收
在程序执行过程中,变量绑定和引用以积极各种内存操作,使用过后不在使用,如果不清理就会产生垃圾数据,占用大量内存,导致计算机不能正常运行,有一些语言 内存空间的申请和释放都需要程序自己写代码才可以完成,python 为了方便程序员使用,内部集成了一套垃圾回收程序。
引用回收
-
在程序中变量每绑定一个数据值,他的内部,就有一个引用就加一,如果解除数据绑定引用就减1,直到0,就被回收
name1 = '张三' # 引用为1 name2 = name1 # 引用为2 age = 18 # 引用为1 del # 解除绑定 del age # 引用为0被回收
标记回收
-
在程序中可能会出现,两个列表或元组或其他可以嵌套的数据类型,在解除与变量名的帮定后内存地址里面出现循环即引用一直唯一我们也不使用为垃圾数据的引用的情况
num1 = [1,2,3,4,5] # 引用为1 num2 = [111,222,333,444] #引用为 1 # append()的函数使用了像列表末尾增加元素的 num1.append(num2) # 此时列表就变成了[1,2,3,4,5,[111,222,333,444]]引用为2 num2.append(num1) # 此时列表就变成了[111, 222, 333, 444, [1, 2, 3, 4, 5, [...]]] 引用为2 del num1 # 引用为1 del num2 # 引用为1 当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中的所有的数据 并给只产生循环引用的数据打上标记之后一次性清除
这个时候我们用不到,程序也不回收也会产生垃圾,这个时候就需要,引用回收,来解决内存占用过大
分代回收
垃圾回收每过1分钟就会遍历一遍内存,查看是否有需要回收的,如果一直长时间频繁的遍历也会导致内存暴涨影响程序,是因为,垃圾回收也是一套程序。此时标记回收就突出他的优势
流程控制
在现实生活中,我们做的每件事也是有一定流程去执行
流程控制基础
顺序结构流程
按照从上到下语句依次执行
print('开始')
name = input('输入姓名')
print(name)
print('结束')
分支结构流程
分条件执行
单分支
# if 判断条件:
# 制表符 代码片段
age = input('请输入年龄')
age = int(age) # int() 强制转换数据类型但是只能转换字符型数字
if age<28:
print('小姐姐')
双分支
# if 判断条件:
# 代码块
# else:
# 代码块
age = input('请输入年龄')
age = int(age) # int() 强制转换数据类型但是只能转换字符型数字
if age<28:
print('小姐姐')
else:
print('老北鼻')
多分支
# if 判断条件:
# 代码
#elif 判断条件:
# 代码
#elif 判断条件:
# 代码
#elif 判断条件:
# 代码
#else:
# 代码
#结束
score = input()
score = int(score)
if score > 90:
print('优')
elif score > 80:
print('良')
elif score > 70:
print('中')
elif score > 60:
print('及格')
else:
print('不及格')
循环结构流程
while循环
# while 判断语句: # 如果成立者向下执行
# 代码
# 会一直输出看妹子
while 1:
print('看妹子,看妹子')
while循环嵌套if分支
#让一些代码反复的执行
# 先判断条件是否成立
# 条件成立则执行循环体代码
# 循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
# 循环往复判断 直到条件不成立才会结束循环体代码的执行
# while 判断条件:
# 循环体
# if 判断条件:
# 代码
# elif 判断条件:
# 代码
# else:
# 代码
age = input('请输入年龄')
age = int(age)
while age > 16:
if age < 25:
print('正值青春年华')
if age == 21:
print('谈婚论价')
elif age < 35:
print('面临中年危机')
else:
print('老年养老')
age -= 100
break # 强行结束循环体
continue # 立即结束本次循环,开始下次循环 直接跳转到条件判断处
while 判断条件:
循环体
循环体遇到continue立即结束本次循环
while else 循环
name = input('请输入姓名')
while name == '张三':
print(name)
else:
print('你是谁啊')