一.垃圾回收机制
1.定义:是用来回收没有关联变量名的变量值所在的内存空间。
2.分类:分为引用计数,标记清除和分代回收三类。
3.引用计数:分为引用计数增加和计数减少,当变量值关联了一个变量名就代表着计数增加1,而解除关联则代表计数减少1,计数减少为0时,清除其值所在内存空间。
4.标记清除:遇到循环引用时用到,先停止整个程序,之后标记处在栈区的变量名,只要能直接引用或间接引用的都存活,最后清除在堆区的没有标记的对象。
5.分代回收:因为每次回收内存都要遍历所有对象的引用计数,所以存在效率问题。意思就是一直表现好的,一直都被关联的关键值,当被了解到时,会降低遍历的次数。
二.作业:
0、分别画出下面两个列表在内存中是如何存放的
l1=[11,22,[333,444]]
l2=[11,22,[33,{'name':'egon','age':18}]]
答:
1、用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name : Egon
Age : 22
Sex : male
Job : Teacher
------------- end -----------------
答:name = input('Name:')
age = input('Age:')
sex = input('Sex:')
job = input('Job:')
print('--------info of %s---------'%(name))
print('Name:',name)
print('Age:',age)
print('Sex:',sex)
print('Job:',job)
print('----------end---------')
2、用户输入账号密码,程序分别单独判断账号与密码是否正确,正确输出True,错误输出False即可
答:account_number = input('请输入账号:')
if account_number == 123:
print('true')
else:
print('flase')
password = input('请输入密码:')
if password == 456:
print('true')
else:
print('flase')
3、让计算机提前记下egon的年龄为18岁,写一个才年龄的程序,要求用户输入所猜的年龄,然后程序拿到用户输入的年龄与egon的年龄比较,输出比较结果即可
答: egon_age = 18
egon_age = input('Egon老师的年龄:')
egon_age = int(egon_age)
if egon_age == 18:
print('bingo')
elif egon_age > 18:
print('reduce age')
else:
print('add age')
4、程序从数据库中取出来10000条数据,打算显示到页面中,但一个页面最多显示30条数据,请选取合适的算数运算符,计算 显示满30条数据的页面总共有多少个?最后一页显示几条数据?
答:a=10000//30
print(a)
b=10000%30
print(b)
5、egon今年为18岁,请用增量赋值计算3年后egon老师的年龄
答:egon_age = 18 egon_age += 3 print(egon_age)
6、将值10一次性赋值给变量名x、y、z
答:X = Y = Z = 10 print(X,Y,Z)
7、请将下面的值关联到它应该对应的变量名上,你懂的
dsb = "egon"
superman = "alex"
答:dsb,superman = superman,dsb print(dsb,superman)
8、我们只需要将列表中的傻逼解压出来,一次性赋值给对应的变量名即可
names=['alex_sb','wusir_sb','oldboy_sb','egon_nb','lxx_nb','tank_nb']
答:x,y,z,*_ =names print(x,y,z)
选做题:
编写用户登录接口(学的多的同学,尝试做下述作业,这是截止到下周二学完文件处理之后的作业)
#1、输入账号密码完成验证,验证通过后输出"登录成功"
#2、可以登录不同的用户
#3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
#扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟