垃圾回收机制
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.循环结构
根据某些条件的判断循环反复的做相同的事情(不可能一直循环)
在代码的世界里 很多时候可能会出现三者混合
作为小白 在学习流程控制的时候 建议做到代码和与形的结合
流程控制必备知识
1.python中使用代码的缩进来表示代码的从属关系
从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的
2.并不是所有的代码都可以拥有缩进的代码(子代码)
if关键字
3.如果有多行子代码属于同一个父代码 那么这些子代码需要保证相同的缩进量
4.python中针对缩进量没有具体的要求 但是推荐使用四个空格(Windows中tab键)
5.当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
6.相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行
分支结构
-
单if分支结构
if 条件:
条件成立之后才会执行的代码快
-
if...else...分支结构
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
username = input('username>>>:')
if username == 'jason':
print('老师好')
else:
print('去你妹的')
-
if...elif...else分支结构
if 条件1:
条件1成立之后执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif条件3:
条件1和2都成立 条件3成立执行的子代码
else:
上述条件都不成立 执行的子代码
ps:中间的elif可以写多个、上述子代码永远只会走一个
score = input('请输入学生成绩>>>:')
score = int(score)
if score >= 90:
print('优秀')
elif score >=80:
print('良好')
elif score >= 70:
print('一般')
elif score >= 60:
print('及格')
else:
print('挂科')
-
if的嵌套使用
age = 28
height = 170
weight = 110
is_beautiful = True
is_success = False
username = 'tony'
if username == 'tony':
print('tony发现目标')
if age < 30 and height > 160 and weight < 150 and is_beautiful:
print('大妹纸 手机掏出来 让我加微信')
if is_success:
print('吃饭 看电影 天黑了...')
slse:
print('去你妹的 流氓!!!')
else:
print('不好意思 认错人了')
else:
print('不是tony做不出来这件事')
-
循环结构
就是想让一些代码反复的执行
while 条件:
条件成立之后执行的子代码(循环体代码)
-
先判断条件是否成立
-
如果成立是否则执行循环体代码
-
循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
-
如果成立 则继续执行循环体代码
-
按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行
# count = 1 # while count < 5: # print('hrllo world') # count += 1 # count = count + 1 # prrint('想不想干饭?') break # 强行结束循环体 while循环体代码一旦执行到break会直接结束循环 continue # 直接跳到条件判断处 while循环体代码一旦执行到continue会结束次循环 开始下一次循环 while 条件: 循环体代码 else: 循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码