首页 > 其他分享 >垃圾回收机制与流程控制

垃圾回收机制与流程控制

时间:2022-09-27 21:13:23浏览次数:47  
标签:count -- 流程 回收 else 垃圾 print input 代码

垃圾回收机制与流程控制

img

目录

一、垃圾回收机制

解释器在执行到定义变量的语法时,会申请内存来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾),就该其占用的内存给回收掉,Python通过垃圾回收机制自动管理。
垃圾回收机制:专门回收不可用的变量值所占用的内存空间。

1.为什么要用垃圾回收机制

程序运行过程中会申请大量内存空间,二对于一些无用的内存空间如果不及时清理的话会导致内存溢出,最终导致程序崩溃,为了程序更好的运行与更好管理内存,Python解释器自带垃圾回收机制,清理垃圾,释放管理内存。

2.垃圾回收机制的原理分析

1.引用计数
    name = 'jia'  数据值jia的引用计数为1
    name1 = 'jia'  数据值jia的引用计数为2
    del name1  数据值jia的引用计数为1
    当数据的引用计数为0的时候,就会被垃圾回收机制当做垃圾回收掉
    当数据的引用计数不为0的时候,永远不会被垃圾回收机制回收掉
2.标记清除(主要针对循环引用问题)
 eg:
     l1 = [11, 22]    # 引用计数为1
     l2 = [33, 55]    # 引用计数为1
     l1.append(l2)  # l1 = [11, 22, [33, 55]]  引用计数为2
     l2.append(l1)  # l2 = [33, 55, [11, 22]]  引用计数为2
     del l1  # 断开变量名l1与列表的绑定关系  引用计数为1
     del l2  # 断开变量名l2与列表的绑定关系  引用计数为1
     当内存占用量达到临界值时,程序会自动停止,然后扫描所有的数据,并且只给产生循环引用的数据打上标记,然后一次性清除

image

3.分代回收
  垃圾回收机制的频繁运行也会损耗各项资源的
  l1,l2,l3(越往下,检测频率越低)
  核心:
  分代指的是根据存活时间来为变量划分不同的等级(也就是不同的代)
  在多次扫描情况下,都没有被回收的变量,机制就会认为,该变量是常用变量,对其扫描的频率会降低。

image

二、流程控制理论

流程控制:指控制程序的执行流程

1.顺序结构

从上往下依次执行,我们之前编写的代码都属于该结构

image

2.分支结构

事物的执行会根据条件的不同做出不同的执行策略

image

3.循环结构

事物的执行会根据某个条件出现重复

image

三、流程控制小知识点

1.python中使用代码的缩进来表示代码的从属关系
   从属关系:缩进的代码(子代码)的执行取决于上面的没有缩进的
2.并不是所有代码都可以拥有子代码的(if有的)

3.如果多行子代码同属于一个父代码,则需要他们有相同的缩进量
4.缩进可以按空格或者tab键
5.某一行代码需要写子代码时,那么这一行的结尾肯定需要冒号
6.相同缩进量的代码彼此同起同坐,按照顺序执行

img

四、流程控制理论之分支结构

1.单if分支结构

if 条件:
     条件成立才会执行的代码块
eg:
    username = input('username-->>')
    if username == 'jia':
        print('你好')

image

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

if 条件:
   条件成立之后执行的子代码
else:
    条件不成立执行的子代码
eg:
    username = input('username-->>')
    if username == 'jia':
     	print('你好,jia')
    else:
        print('不好意思,认错了')

3.if...elif...else分支结构

if 条件1:
    条件1成立之后执行的代码块
 elif 条件2:
 	条件1不成立,条件2成立执行的代码块
 elif 条件3:
 	条件1,条件2不成立,条件2成立执行的代码块
 else:
 	上述条件都不成立时,执行的代码块
注意:中间的elif可以写多个,都是子代码只会执行一个
eg:
    score = input('请输入你的成绩-->>')
    score = int(score)   # 讲字符串的整数转换成整型的整数
    if score >= 90:
        print('优秀')
     elif score >= 80:
        print('良好')
     elif score >= 70:
        print('一般')
     elif score >=60:
        print('及格')
     else:
        print('不及格')

image

4.if的嵌套使用

eg:
is_eat = True
is_drink = True
is_play = False
if is_eat:
    print('吃了米饭')
    if is_drink:
        print('喝了八杯水')
        if is_play:
            print('玩了一下午')
        else:
            print('一直在学习')
    else:
        print('一天都没有喝水')
else:
    print('什么都没吃')

四、流程控制理论之循环结构

循环结构就是让一些代码反复的执行
while 条件:
    条件成立之后执行的子代码(循环体代码)
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕后再次回到条件判断处,判断条件是否成立
4.如果成立,继续执行循环体代码
5.按照上面的依次执行,直到条件不成立才会解释循环
eg:
    count = 1
    while count < 5:
        print('结束了')
         count += 1
     print('哈哈哈哈')   
# 循环打印1~10,碰到6结束循环
count = 1
while count < 11:
    if count == 6:
        break   # 强行结束代码体
    print(count)
    count += 1
# while循环体代码一旦执行到break会直接结束循环
# 循环打印1~10,碰到6结束本次循环 开始下一次循环
count = 1
while count < 11:
    if count == 6:
        count += 1
        continue
    print(count)
    count += 1
额外知识点:
while 条件:
 	循环体代码
else:
	循环体没有强制被结束的情况下,执行完毕就会执行else子代码

五、作业

1.根据用户输入内容打印其权限
    '''
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
    '''
方法1解答:
    user_info = '''
        jason --> %s
        tom  --> %s
        jack,rain --> %s
        其他 --> %s
    '''
    j = input('jason -->')
    t = input('tom -->')
    jr = input('jack,rain -->')
    other = input('其他 -->')
    print(user_info % (j, t, jr, other))
方法2解答:
    a = {'jason': '超级管理员'}
    b = {'tom': '普通管理员'}
    c = {'jack': '业务主管', 'rain': '业务主管'}
    name = input('请输入你的名字')
    if name in a:
        print('超级管理员')
    elif name in b:
        print('普通管理员')
    elif name in c:
        print('业务主管')
    else:
        print('普通用户')
2.编写用户登录程序
 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
    eg:black_user_list = ['jason','kevin','tony']
 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
    eg: oscar 123
解答:
    black_user_list = ['jason', 'kevin', 'tony']
    username = 'oscar'
    pwd = '123'
    # user = {'oscar': '123'}
    # name = input('请输入你的名字')
    user = input('请输入你的用户名')
    password = input('请输入你的密码')
    if user in black_user_list:
        print('你在黑名单内,拒绝登录')
    elif user == username and pwd == password:
        print('登录成功')
    else:
        print('请输入正确的用户名和密码')
3.编写用户登录程序
 用户如果登录失败 则只能尝试三次
 用户如果登录成功 则直接结束程序
解答:
    count = 1
    username = 'jia'
    pwd = '123'
    while count < 4:
        count += 1
        user = input('请输入你的用户名')
        password = input('请输入你的用户名')
        if username == user and pwd == password:
            print('登录成功')
            break
    else:
            print('登录次数超过三次,请稍后再尝试')

image

4.猜年龄的游戏
 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
解答:
    age = '18'
    count = 1
    Y = 'y'
    N = 'n'
    while count < 4:
        count += 1
        age1 = input('请输入您的年龄')
        if age == age1:
            print('你猜对了')
            break
    if count < 2:
        if age < 18:
            print('猜小了')
            count += 1
            continue
        else:
            print('猜大了')
            count += 1
            continue
    else:
            input1 = input('是否继续尝试 ,按Y/N')
            if input1 == Y:
                count = 0
                continue
            if input1 == N:
                break

标签:count,--,流程,回收,else,垃圾,print,input,代码
From: https://www.cnblogs.com/zx0524/p/16735995.html

相关文章

  • 流程控制-垃圾回收机制
    垃圾回收机制与流程控制垃圾回收机制引用计数数据值身上的引用计数name='123'#引用计数为1name1=name#引用计数+1delname1#引用计数-1'''数据值每多......
  • 垃圾回收机制与流程控制
    垃圾回收机制与流程控制1.垃圾回收机制引用计数数据值被引用的数量eg:name='timi'#数据值timi身上的引用计数为1name1=name#timi身上的引用计数为2当数据......
  • 垃圾回收机制
    垃圾回收机制"""有一些语言内存空间的申请和释放需要程序员写代码才能完成,但是python不需要,通过垃圾回收机制自动管理"""1.引用计数 name='max'#数据值'max'的引......
  • 垃圾回收、python中的流程控制
    垃圾回收机制1.概念垃圾回收机制(GC):是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间2.原理Python的垃圾回收机制(GC)主要使用引用计数(referen......
  • Python之垃圾回收机制与流程控制
    python之垃圾回收机制与流程控制目录一、垃圾回收机制二、流程控制1.流程控制理论2.流程控制的必备python知识3.流程控制之分支结构(ifelse语句)(1)单if分支结构(2)if...el......
  • 垃圾回收机制/控制流程/分支结构/循环结构
    今日内容详细垃圾回收机制流程控制理论/必备知识分支结构循环结构1.垃圾回收机制:#在一些编程语言中内存的申请以及它的释放都需要程序员自己编写代码才可以实现......
  • 垃圾回收机制和流程控制三大重点
    今日分享垃圾回收机制流程控制理论(*****重点)流程控制之分支结构(*****重点)流程控制之循环结构(******重点)垃圾回收机制"""有一些语言内存空间的申请和释放......
  • 流程控制
    目录1.流程控制理论2.流程控制必备知识3.分支结构4.循环结构1.流程控制理论流程控制>>>:控制事物的执行流程事物执行流程总共可以分为三种1.顺序结构从上往下依次执行......
  • 垃圾回收机制 流程控制理论
    今日内容垃圾回收机制'''有一些语言内存空间申请和释放都需要程序员自己写代码才可以完成但在python里垃圾回收机制自动管理'''1.引用计数name='sun......
  • 进入python的世界_day5_python基础——流程控制
    写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要昨日作业补充另一种方法:原理:可以将表格整体看成是一个字符串......