一、内存管理
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、变量值的三个特征:
i
d:反应的是内存地址 type:数据类型 值: age=18 print(id(age) print(type(age)) print(age) 总结: 2.1. id相同,值一定相同 2.2. 值相同,id不一定相同 ''' >>> x='name:egon age:18***' >>> y='name:egon age:18***' >>> id(x) 2847698422856 >>> id(y) 2847698422928 ''' # x=11111111111111111111111111231231231231222222222222 # y=11111111111111111111111111231231231231222222222222 # # print(id(x)) # print(id(y))
3、is与==
==:值是否相等 is:id是否相等
4、可变类型与不可变类型
可变类型:值改变,id不变,证明就是在改变原值 不可变类型:指改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可改变类型 x=10 print(id(x)) x=11 print(id(x)) l=['a','b','c'] print(id(l)) l[0]=A print(id(l)) print(l)
二、python2中与用户交互
1、在python3中只有一个input
特点:用户输入的任意内容都存成str类型 x=input('>>>:') #x='123123123' print(type(x)) salary=input('>>:') #salary=3000 salary=int(salary) print(salary*12)
2、在python2中只有一个raw_input,与python3中input一模一样
x=raw_input('>>>:') 要求用户必须输入一个明确的类型,输入什么类型,就存成什么类型 x=input('>>>:')
三、数据类型基本使用
一、数字类型
1、整形int:
作用:用来记录年龄、等级、各种号码状态 定义: age=10 #age=int(10) print(type(age)) 使用: print(age+1) print(age>3)
2、浮点型float
作用:用来记录身高、体重、工资状态 定义: salary=3.1 #salary=float(3.1) # print(type(salary)) #使用: print(3.1 + 2.3) print(3.1 > 2.3) print(3.1 > 2) print(3.1 + 2)
二、字符串类型str
作用:用来记录描述性质状态,比如名字、性别 定义:在单引号(''),双引号("")三引号(’‘’ ‘’‘ """ """)包含一系列字符 x='abc' x="abc" x=""" abc xxx """ msg='my name is "egon"' 使用: print('abc'+'def')#仅限于str类型直接相加 print('abc*10')# *的只能是数字 了解字符的大小:ASCII表 x='abcdef' y='z' print(x > y) print('a' > 'Z' ) print('a' > 10 )
三、列表类型:list
作用:用来记录多个值,用索引对应值,索引反映是位置 定义:在[]内用逗号分隔开多个任意类型的值 l=[1,3.1,'xxx',['a','b','c']] #l=list(...) print(type(l)) 使用 print(l[0]) print(l[2]) print(l[3][0]) students_info=[ ['egon',18,['play',]], ['alex',18,['play','sleep']] ] #print(students_info[1][2]
四、字典类型dict
作用:用来记录多个值,用key对应value,其中key对value有描述性功能 定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value是可以任意类型,而key通常应该是str类型 x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...) print(type(d)) 使用: print(d['x']) print(d['m']['aaa']) print(d['z'][1])
列表的方式
name age gender compay_info emp_info=['egon',18,'male',['Oldboy','SH',200]] print(emp_info[1]) print(emp_info[3][2])
字典方式
emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]} print(emp_info['age']) print(emp_info['company_info'][0]) names=['egon','alex','kevin'] dic={'name1':'egon','name2':'alex','name3':'kevin'}
五、布尔类型:True,Flase
print(type(True)) print(type(False)) tag1=True tag2=True print(id(tag1)) print(id(tag2)) age=18 print( age > 18)
所有数据类型自带布尔值
布尔值为假的数据类型:0,None,空
print(bool([])) print(bool('')) print(bool(None))
六、None
print(type(None))
四、基本运算符
1、比较运算符
> >= < <= == != print(10 != 11) 了解: x=None print(x == None) print(x is None) l1=['abc',1,['a','b','c']] l2=['abc','aa',] print(l2 > l1)
逻辑运算符:
and连接左右两个条件,只有两个条件同时成立时and运算结果为True print(10 > 9 and 3 > 2 and 'egon' == 'egon' 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)
name_bk='egon' pwd_bak='123' name=input('please input your name: ') pwd=input('please input your password: ') if name == name_bk and pwd == pwd_bak: print('login successfull') print('login successfull') print('login successfull') print('login successfull') print('login successfull') else: print('username or password error')