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

垃圾回收机制

有一些语言,内存空间的申请和清除都需要程序员自己写代码才可以完成,但是在python中却不需要,通过垃圾回收机制自动管理
1.引用计数
    name= 'lizhi'   表示数据值lizhi的引用计数为1
    name1 = 'lizhi'  表示数据值lizhi的引用计数加1 为2
    del name1       表示数据值lizhi的引用计数减1 为1
 当数据值身上的引用数为0的时候   就会被垃圾回收机制当做垃圾回收掉
 当数据身上的引用数不用0的时候   永远不会被垃圾回收机制回收

2.标记清除
  主要针对循环引用问题
   l1 = [66, 88]    #[66,88]引用计数为1
   l2 = [125, 226]   #[125.226]引用计数为1
   l1.append(l2)    #l1 = [66,88[125.226]]
   l2,append(l1)    #l2 = [125, 226[66,88]]
   del l1  # 断开变量名l1与列表的绑定关系
   del l2  # 断开变量名l2与列表的绑定关系

image

   当内存占用达到临界值的时候,程序会自动停止,然后扫描程序中所有的数据
   并给只产生循环引用的数据打上标记,之后一次性清楚

3.分代回收
   垃圾回收机制的频繁运行也会损耗各项资源
   新生代、青春代、老年代(越往下检测的频率越低)

image

流程控制理论

流程控制>>>:控制事务的执行流程
     事务执行流程可以分为一下三种:
        1.顺序结构
           按照从上往下的顺序一次执行
        2.分支结构
           事务的执行会根据不同的条件做出不同的执行策略
        3.循环结构
           事务执行的时候会根据某个条件重复执行
      注意:在代码的世界中碰到到往往是这三个结构混合出现的

流程控制必备的知识

1.python中使用代码的缩进来表示代码的从属关系
    从属关系:可以理解为下属和领导,领导发话了下属才可以行动,那么在代码中,缩进的代码(子代码)是否执行取决于上面有没有缩进
2.并不是所有的代码都可以拥有缩进的子代码
   关键字:if  else  while  
3.如果有多行子代码同属于一个父代码,那么这些子代码需要保证相同的缩进量
4.python中针对缩进没有具体的要求,推荐使用4个空格(win中tab)
5.当某一行代码需要编写子代码的时候,那么一行代码的结尾肯定需要冒号
6.相同缩进的代码之间平起平坐,按照顺序依次执行

分支结构

1.单if分支条件:
  if条件:
    条件成立以后才会执行的代码快:
代码展示:
l1 = input('请输出你的名字>>>:')
if l1 =='lizhi':
    print('他可爱')

image

2.if...else...分支结构
   if 条件成立以后执行的子代码
   else 条件不成立以后执行的子代码
代码展示:
l1 = input('请输出你的名字>>>:')
if l1 =='lizhi':
    print('他可爱')
else:
    print('他不可爱')

image

3.if...elif....else...分支结构
    if:条件1:
       条件1成立以后执行的子代码
    elif:条件2
       条件1不成立,条件2成立执行的子代码
    elif:条件3
       条件1和2不成立,条件3成立执行的子代码
     else:
        以上条件不成立执行的子代码
代码展示:
l1 = input('请输入你的成绩>>>:')
l1 = int(l1)
if l1 >= 90:
    print('真不错')
elif l1 >= 80:
    print('还行吧')
elif l1 >= 60:
    print('要努力')
else:
    print('退学吧')

image

4.if的嵌套使用
age = 28
height = 170
weight = 100
is_beautifl = True
is_success = False
username = 'lizhi'
if username == 'lizhi':
    print('lizhi喜欢这个姑娘')
    if age < 30 and height > 165 and weight < 120 and is_beautifl:
        print('加一下你的微信吧')
        if is_success:
            print('你能喝冰的么')
        else:
            print('有机会以后再聊')
    else:
        print('我还有事先走了')
else:
    print('暗号不对,不可以')

image

循环结构

想让一些代码反复执行:
while 条件:
    条件成立之后立即执行的子代码(循环体代码)
1.先判断条件是否成立
2.如果成立立即执行循环
3.循环体代码执行完毕后再次回到条件判断处,判断条件是否成立
4.如果成立,则继续执行循环体代码
5.按照上述规律一次执行,直到条件不成立才会执行循环体代码
代码展示:
l1 = 1
while l1 < 5:
    print('hello word')  
    l1 += 1  # l1 = 1l+1
break  # 强制结束循环体
   while代码一旦执行到break会直接结束循环
代码展示:
   l1 = 1
while l1 < 5:
    print('hello word')
    break
continue  # 直接跳到条件判断处
   while代码一旦直接continue会直接结束本次循环,开始下一次循环
 代码展示:
l1 = 1
while l1 < 5:
    print('hello word')
    continue
while 条件:
   循环体代码
else:
    循环代码没有强制结束的情况下,执行完毕就会执行else子代码

作业:

1.
username = input('请输出你的用户名>>>:')
if username == ('jason'):
    print('超级管理员')
elif username == ('tom'):
    print('普通管理员')
elif username == ('jcka, rain'):
    print('业务主管')
else:
    print('其他用户')
2.username = input('请输入你的用户名')
if username == ('jason'):
    print('拒绝访问')
elif username == ('kevin'):
    print('拒绝访问')
elif username == ('tony'):
    print('拒绝访问')
else:
    print('允许登录')
2.username = input('请输入你的用户名')
black_user_list = ['jason', 'kevin', 'tony']
if username in black_user_list:
    print('拒绝登录')
else:
    print('允许登录')
3.
is_username = 'lizhi'
is_password = '456'
l1 = 1
while l1 < 4:
    username = input('请输出你的用户名>>>:')
    password = input('请输入你的用户密码>>>:')
    if username == 'lizhi':
        if password == ('456'):
            print('登录成功')
            break
    else:
        l1 += 1
4.
l1 = 10
while l1 < 20:
    age = input('请输入你猜测的年龄')
    age = int(age)
    if age > 18:
        print('猜大了')
    elif age < 18:
        print('猜小了')
    elif age == 18:
        print('猜对啦')
        break
4.
l1 = 0
while l1 < 4:
    age = input('请输入你猜测的年龄')
    age = int(age)
    if age > 18:
        print('猜大了')
        l1 += 1
    elif age < 18:
        print('猜小了')
        l1 += 1
    elif age == 18:
        print('猜对啦')
        break
    if l1 == 3:
        print('猜测机会已使用完毕')
        l2 = input('请输入y继续,n退出游戏')
        if l2 == 'y':
            print('继续游戏')
            l1 = 0
            continue
        if l2 =='n':
            print('Game over')
            break
posted @ 2022-09-27 21:19  雪语  阅读(44)  评论(0)    收藏  举报