1. 程式人生 > >學習python的第四天

學習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)