内存管理
一、垃圾回收机制(管理内存)
1.引用计数
直接引用(通过栈区在堆区可以直接找到的)
x=10
y=x
print(y)
间接引用(容器类型)(通过栈区在堆区间接找到的)
x=10
l=[ "NAME","23",x]
print(l[2])
2.标记清除(循环引用===>>内存泄漏问题)
3.分代回收------------提高扫描效率
二、 用户的交互
接受用户输入(input):input会将用户输入的所有内容都存成字符串类型(str类型)。
int只能将纯数字的字符串转成整形
格式化输出:
1. % 按照位置传,必须一一对应
adj="my name %s my age is %s" %('bob','98')
print(adj)
如果用字典传 必须要对应相应的key ,形式-----------"%(key)"
%s=====>可以传任意性 %d======>只能传整型
2.str.format (打破位置的限制)(python2/python3都能用)
adj="my name {name} my age is {age}".format(name='bob',age=98)
print(adj)
format新知识:
print('{x}=================='.format(x='hvdjbjla'))
print('{x:=<15}'.format(x='hvdjbjla'))
print('{x:=>15}'.format(x='hvdjbjla'))
print('{x:=^15}'.format(x='hvdjbjla')) #居中显示
print('{x:.3f}'.format(x=23482.8368342)) #取小数点后三位,且四舍五入
3. f (python3.5以上版本)
a=input('my name:')
b=input('my age:')
adj=f"my name {a} my age is {b}"
print(adj)
f用法二:{}内的字符串可以被当做表达式运行
三、基本运算符
1.算数运算符 +-*/
// 只保留整数部分
%======>取余数
**======>几次方
2.比较运算符 <、>、>=、<=、==(是否相等)、!=(不等于)、
3.赋值运算符
变量赋值: =
增量赋值
a = 3
a += 5
print(a) ====>8
4.链式赋值
x = y = z = 10
5.交叉赋值
n,m=m,n
6.解压赋值
num_01=[11,22,23,45,34,]
a1,a3,aa,*_=num_01#取前面的值
print(a1,a3,aa)===========>11,22,23
num_01=[11,22,23,45,34,]
*_,a1,a3,aa,=num_01#取后面的值
print(a1,a3,aa)===========>23,45,34
3.2 可变不可变类型
可变类型:值改变,ID不变,改的是原来的值
如:list、dict
不可变类型:值改变,ID也变了,产生新的值,但是压根没有改变原值
如:int、str、float、bool、