python垃圾回收机制、与用户交互及运算符
一 垃圾回收机制详解(了解)
1、什么是垃圾回收机制
垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间
2、为什么要用垃圾回收机制
程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来。
3、垃圾回收机制原理分析
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题,并且通过“分代回收”(generation collection)以空间换取时间的方式来进一步提高垃圾回收的效率。
3.1 什么是引用计数
引用计数就是:变量值被变量名关联的次数
3.1.1、直接引用:从栈区出发直接引用到的内存地址。
x = 10
print(id(x))
y = x
z = x
3.1.2、间接引用:从栈区出发引用到堆区后,再通过进一步引用才能到达的内存地址。
主要针对的容器类型
l = [‘a‘, ‘b‘, x]
print(id(l[2]))
d = {‘mmm‘: x} # 间接引用
print(id(d[‘mmm‘])
ps:
3.2 标记清除:
原来解决循环引用带来的内存泄漏问题
这样栈区中不再有l1与l2,于是列表于是列表1与列表2都没有被标记为存活,二者会被清理掉,这样就解决了循环引用带来的内存泄漏问题。
3.3 分代回收
基于引用计数的回收机制,每次回收内存,都需要把所有对象的引用计数都遍历一遍,这是非常消耗时间的,于是引入了分代回收来提高回收效率,分代回收采用的是用“空间换时间”的策略。
a、分代
核心思想:gc会降低多次扫描但是没有回收的变量的扫描频率
b、回收
优点:提升效率
缺点:后一代扫描频率低于前一代,变量若回收,则会延迟
二 用户交互
1、为什么要有用户交互
用户交互就是人往计算机中input/输入数据,计算机print/输出结果,为了让计算机能够像人一样与用户沟通交流
2、如何用用户交互
本质是输入(input)输出(output)
2.1 用户输入
2.2 字符串格式化输出
2.2.1 %s(字符串型)
2.2.2 str.format:兼容性好(python2.6引进)
2.2.3 打破位置的限制,按照key=value传值
2.2.4 f‘‘(python3.5后 #了解)
x=input(‘your name:‘)
y=input(‘your age:‘)
res=f‘我的名字是{x}我的年龄是{y}‘
print(res)
三 运算符
1、算术运算符
- *都遵循基本运算规则
/:带小数
//:只保留整数部分,不四舍五入
%:取余数
**:a ** b a的b次方
2、比较运算(结果True/False):>、>=、<、<=、==、!=(不等于)
3、赋值运算符
3.1 =:变量的赋值
3.2 增量赋值:
age=18
age=age+1 <==>age +=1
age = 19
age *=3
age /=3
age%=3
age**=3
3.3 链式赋值
x=y=z=10
id(x)=id(y)=id(z)
3.4 交叉赋值
m=10
n=20
temp=m <==> m,n=n,m
m=n
n=temp