目录
垃圾回收机制
一些语言存放空间和释放都需要程序员自己去写代码完成,但是python不需要,python可以通过使用垃圾回收机制自动管理。
1引用计数
name = 'lei' 数据值lei引用计数为1
name1 = name 数据值lei引用计数+1 为2
del name1 数据值引用计数-1 为1
当数据身上计数值为0时就会被垃圾机制当作垃圾回收。
当数据值身上的引用计数不为0时永远不会被垃圾回收机制回收
2标记清除
为了解决循环引用的不足,python的底层不会单单只用引用计数器,引入了一个机制叫做标记清楚。主要针对循环引用问题。
height1 = [123, 321] # 引用计数为1
height2 = [111, 222] # 引用计数为1
height1.append(height2) #引用计数为2 height1 = [123, 321, 111, 222]
height2.append(height1)#引用计数为2 height1 = [ 111, 222 123, 321]
del height1 # 断开变量名height1与列表的关系
del height2 # 断开变量名height2与列表的关系
变为
当内存达到临界值时,程序会自动停止,然后扫面程序中所有的数据,并且给只产生循环引用的数据打上标志之后一次性清楚。
3分代回收
将第二个链表(可能存在循环引用的链表),维护成3个环状双向的链表:
0代: 0代中对象个数达到700个,扫描一次。
1代: 0代扫描10次,则1代扫描1次。
2代: 1代扫描10次,则2代扫描1次。
垃圾回收机制的频繁运行也会消耗各类资源,用0,1,2代分别对计数进行判断来处理数据价值。
流程控制理论
python流程控制大致可以分为三种:
-
顺序结构
-
分支结构
事物执行会根据条件的不同做出不同的执行策略。
-
循环结构
在编写代码时也会涉及到重复的执行某一段代码,这时就会用到循环控制语句。
流程控制必备知识
1.python中使用代码缩进来表示代码的从属关系。
name = 123
if name == 123:
print(name)
2并不是所有的代码都可以拥用缩进的子代码
print()
print()
#就不是缩进的子代码
3如果有多行子代码属于同一夫代码,那么这些子代码需要保证相同的缩进量。
print()
print()
4python中针对缩进量没有具体的要求,但是推荐4个空格。
5在某一行代码需要编写子代码时,那么比这一行代码的结尾肯定要冒号。
6相同缩进量的代码彼此之间平起平坐,按照顺序结构一次执行。
i = 5
if i < 10:
print(i)
print(i+1)
print(i+2)
分支结构
1.单if分支结构
if 条件
条件成立后才会被执行
i = 5
if i < 10:
print(i)
print(i+1)
print(i+2)
2.if...else...分支结构
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
3if...elif...else分支结构
if 条件1:
条件1执行的代码
elif 条件2:
条件1不成立条件2成立
elif 条件3:
条件1和条件2都不成立,条件3成立的子代码
else:
上述条件都不成立 执行的子代码
4if嵌套使用
proof = int(input("输入驾驶员每 100ml 血液酒精的含量:"))
if proof < 20:
print("驾驶员不构成酒驾")
else:
if proof < 80:
print("驾驶员已构成酒驾")
else:
print("驾驶员已构成醉驾")
运行结果为:
输入驾驶员每 100ml 血液酒精的含量:10
驾驶员不构成酒驾
循环结构
反复执行的代码
关键字while主要表达形式如下:
while 条件表达式:
语句
与 if 语句相似,while 循环的条件表达式也无须括号,且表达式末尾必须添加冒号。当条件表达式计算结果为 True 时,执行下一行缩进的语句;若条件表达式计算结果为 False,则跳过该条语句继续向下执行。例如:
n = 10
sum = 0
i = 1
while i <= n:
sum = sum + i
i += 1
print("1 到 %d 之和为:%d" %(n,sum))
运行结果如下图:
1先判断条件是否成立
2如果成立就生成循环体里面的代码
3循环体执行完毕后再次回到条件判断处,判断条件是否成立,如果成立则会执行循环体内的代码。
按照上述的规律,直到条件不成立结束循环体内的代码。
关键字
break # 强制退出
continue # 跳过条件判断处
# continue 和 break 用法
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print i # 输出双数2、4、6、8、10
i = 1
while 1: # 循环条件为1必定成立
print i # 输出1~10
i += 1
if i > 10: # 当i大于10时跳出循环
break
标签:10,python,流程,理论,计数,引用,条件,print,代码
From: https://www.cnblogs.com/bnmm/p/16735710.html