首页 > 编程语言 >Python之垃圾回收机制与流程控制

Python之垃圾回收机制与流程控制

时间:2022-09-27 20:57:39浏览次数:48  
标签:Python 代码 回收 else 计数 引用 条件 执行 垃圾

python之垃圾回收机制与流程控制

目录

一、垃圾回收机制

   在其他的编程语言中,释放和申请内存空间都需要程序员自己写代码申请;但是python可以通过自动回收机制来进行自动管理,让我们一起来看看python中的垃圾回收机制是如何运行的吧QvQ

想要弄清楚垃圾回收机制,首先我们应该来了解引用计数
1.引用计数reference count
  定义:引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。
  #简单来说,一个数据被引用时,其引用计数则会+1,而当其引用次数变为0时,将会把这个数据值当作垃圾删除掉。
  #也就是说,引用计数代表了一个数据值被需要的程度,当不被需要时,该数据则自动变成"垃圾"被清理掉了
  1)举例
  name = 'jason'  数据值jason身上的引用计数为1
	name1 = name	数据值jason身上的引用计数加一 为2
	del name1		数据值jason身上的引用计数减一 为1
  
  #当数据值身上的引用计数 为0   的时候,就会被垃圾回收机制当做垃圾回收掉
 	#当数据值身上的引用计数 不为0 的时候,永远不会被垃圾回收机制回收
2.引用计数的缺点
  1)频繁更新引用计数会降低运行效率
  2)原始的引用计数无法解决 循环引用问题
3.标记清除   ==>解决循环引用占用内存
    #举例
    	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
	当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据
 	并给只产生循环引用的数据打上标记 之后一次性清除
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('可以登陆游戏')
image-20201212190410230

(2)if...else...分支结构

1.语法
if 条件:
     	条件成立之后执行的子代码
else:
      条件不成立执行的子代码
2.举例
 	 username = input('age:')
   if username >= 18:
       print('可以登陆游戏')
   else:
       print('未成年人禁止登陆')
image-20201212190410230

(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('挂科 交钱重修')
image-20201212190410230

(4)if的嵌套使用

if、if else 和 if elif else,这 3 种条件语句之间可以相互嵌套

# 举例
proof = int(input("输入驾驶员每 100ml 血液酒精的含量:"))
if proof < 20:
    print("驾驶员不构成酒驾")
else:
    if proof < 80:
        print("驾驶员已构成酒驾")
    else:
        print("驾驶员已构成醉驾")
if循环

4.循环结构

while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块

1.while条件:条件成立之后执行的子代码(循环体代码)
 1)判断条件是否成立
 2)成立=>>执行循环代码体
 3)循环代码体执行完毕=>>再次回到条件判断处,判断条件是否成立
 4)成立=>>执行循环代码体
 5)直到条件不成立=>>结束执行
 
2.while条件中的关键字
 1)break  # 强行结束循环体
	while循环体代码一旦执行到 break 会直接结束循环
 2)continue  # 直接跳到条件判断处
	while循环体代码一旦执行到 continue 会结束本次循环 开始下一次循环
  
 # while  else:
 while 条件:
    循环体代码
else:
    循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码

标签:Python,代码,回收,else,计数,引用,条件,执行,垃圾
From: https://www.cnblogs.com/DuoDuosg/p/16735947.html

相关文章

  • Python基础5
    今日内容概要垃圾回收机制流程控制理论流程控制必备知识分支结构循环结构作业今日内容详细垃圾回收机制  有一些语言内存空间的申请和释放都需......
  • 垃圾回收机制/控制流程/分支结构/循环结构
    今日内容详细垃圾回收机制流程控制理论/必备知识分支结构循环结构1.垃圾回收机制:#在一些编程语言中内存的申请以及它的释放都需要程序员自己编写代码才可以实现......
  • python之基本数据类型
    python之基本数据类型目录基本数据类型(知识点整合)1.整型int2.浮点型float3.字符串string4.列表list5.字典dictionary6.布尔值bool7.元组tuple8.集合set基本数据类型(知......
  • 垃圾回收机制和流程控制三大重点
    今日分享垃圾回收机制流程控制理论(*****重点)流程控制之分支结构(*****重点)流程控制之循环结构(******重点)垃圾回收机制"""有一些语言内存空间的申请和释放......
  • 【python】使用python处理excel数据
      目标使用python处理excel文件的数据,基本操作包括:excel文件读写,增删sheet页。 调研python-pandas模块 实现读 写    sheet页修......
  • python进阶之路5
    作业讲解1.获取用户输入并打印成下列格式 ------------infoofJason-----------Name:JasonAge:18Sex:maleJob:Teacher-------......
  • 垃圾回收机制 流程控制理论
    今日内容垃圾回收机制'''有一些语言内存空间申请和释放都需要程序员自己写代码才可以完成但在python里垃圾回收机制自动管理'''1.引用计数name='sun......
  • 进入python的世界_day5_python基础——流程控制
    写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要昨日作业补充另一种方法:原理:可以将表格整体看成是一个字符串......
  • python基础知识
    垃圾回收机制1.引用计数​name='jason'数据值jason身上的引用计数为1​name1=name数据值jason身上的引用计数加一为2​delname1......
  • 垃圾回收机制
    目录引入1.引用计数2.标记清除3.分代回收引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收......