1.Cpython解释器的垃圾及回收机制
什么是垃圾: 当一个值身上没有绑定任何变量(该值的引用计数=0),该值就是垃圾.引用计数增加
age=18 # 18的引用计数等于1
x=age # 18的引用计数等于2
print(age)
print(x)
引用计数减少
age=19 #18的引用计数等于1
print=(age)
del x #18的引用计数等于0
2.变量值的三个特征
id: 反映的是内存地址 type:数据类型 值:
age=18
print(id(age))
print(type(age))
print(age)
总结: id相同,值一定相同 值相同,id可以不同
>>> x='name:egon age:18***'
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
3.is与 ==
== : 值是否相等
is : id是否相等
4.可变类型与不可变类型
可变类型: 值改变,id不变,证明就是在改变原值
l=['a','b','c']
print(id(l))
l[0]='A'
print(id(l))
print(l)
不可变类型:值改变,id不变,证明不是子啊改变原值,而是创建了新值,原值是不可改变类型
x=10
print(id(x))
x=11
print(id(x))
python2中与用户交互
1.在python3中只有一个input
特点:会将用户输入的任意内容都存成str类型
2.在python2中只有一个raw_input,与python3的input一模一样
x=raw_input('>>>: ')
要求用户必须输入一个明确的类型,输入什么类型就存成什么类型
数据类型的基本使用
1.整型 int
作用:用来记录年龄/等级/各种号码状态
定义:
age=10 #age=int(10)
2.float浮点型
作用:用于标识工资/身高/体重
定义:
salary=3.1 #salary=float(3.1)
注:整型int和浮点型float也就是数字,可以进行加减乘除等运算.
3.字符串str
在python中,加了引号的字符就是字符串类型,python并没有字符类型
作用: 描述性的内容,如姓名/性别/国籍/种族
定义:
name='kopa' #name=str('kapa')
单引号与双引号没有区别,只考虑单双的引用配合.
多行字符串必须用多引号
msq = "My name is Kopa,I'm 18 years old"
msq = '''
努力朝九晚五
渴望浪迹天涯
'''
字符串只能进行"相加"和"相乘"运算
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5
'egonegonegonegonegon'
注:字符串相加的效率不高
字符串1加字符串3,并不会在字符串1 的基础上加上字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当于字符串1与字符串3的空间被复制了一次.
注:只能字符串加字符串,不能字符串加上其他类型
4.列表list
在[ ]内用逗号分隔,可以存放n个任意类型的值
作用:存储多个值的情况,比如一个人有多个爱好
定义:
students = [ 'egon','alex','kopa'] #students = list(['egon','alex','kopa'])
#存放多个学生的信息:姓名,年龄,爱好
students_info=[['kopa',18,['play','read']],['egon',18,['sleep','play']]]
print(students_info[0][2][0]) #取出第一个学生的第一个爱好'play'
5.字典{ }
为何还要用字典?
存放一个人的信息:姓名/性别/年龄,有很多个值.可以用列表list去存放,定义列表的目的不单单是为了存,还要考虑取值,可用索引对应的值去取,而真正意义上并没有规定什么位置放什么值,所以字典就是既可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value.
在{ }内用逗号分隔,可以存放多个key:value的值,value可以是任意类型.
作用: 存储多个值的情况,每个值都有唯一一个对应的key,可以更加方便高效地取值
定义:
info={'name':'kopa','age':18,'height':126}
字典相关的嵌套/取值
info={
'name':'kopa',
'hobbies':['play','read'],
'company_info':{
'name':'oldboy',
'type':'education'
'emp_num':40,
}
}
print(info['commpany_info']['name']) #取公司名
students=[
{'name':'alex','age':28,'hobbies':['play','sleep']},
{'name':'kopa','age':18,'hobbies':['play','read']},
]
print(student[1]['hobbies']) #取第二个学生的第二个爱好
6.布尔
布尔值,一个Ture. 一个False
>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True
布尔类型的重点
-
None,0 ,空(空字符串,空列表,空字典等)三种情况下布尔值为Fales
-
其余均为真
基本运算符
比较运算符
==
!=/<> 不等于
`>
<
`>=大于等于
<=小于等于
逻辑运算
and
连接左右两个条件,只有两个条件同时成立时and预算的结果为True
or
连接左右两个条件,两个条件成立任意一个or运算的结果就为True
print(False or False or True or False or 3 > 10)
res=(True or (False and True)) or ((False or True) and False)
res=(True or False) or (True and False)
res=True or False
print(res)
not
print(not 10 > 3)
x=None
print(not x is None)
print(x is not None)
age1=18
age2=19
print(age2 is not age1)