學習python的第四天
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)