python必備
最近C++用的有點多,複習一下python,看到自己2年前剛入門python的時寫的筆記,寫在部落格裡,一方面分享給python入門小白(大佬請忽視),另一方面一些容易忽視的點也再提醒一下自己。
基礎部分
- Geany是一款簡單的文本編輯器,比較好用,在Linux系統可以使用
指令進行安裝。sudo apt-get install geany
- 字元串中我們使用.title()函數可以使的單詞首字母大寫
- 删除字元串首尾空格的函數有如下函數,但是需要注意的是,這種删除隻是暫時的,接下來再次詢問時會發現這個字元串和原來還是一樣的,是以經常講删除操作後的結果存回到變量中
.lstrip() #删除字元串開頭的空白
.rstrip() #删除字元串結尾的空白
.strip() #删除字元串首尾的空白
4.在python中使用兩個乘号表示乘法運算
5.可以調用函數str()讓python将非字元串值表示為字元串
6.在python3中兩個整數相/,如果有小數會保留小數,但是python2中會類似于C++中結果為整數
7.什麼是可變/不可變對象不可變對象
該對象所指向的記憶體中的值不能被改變。當改變某個變量時候,由于其所指的值不能被改變,相當于把原來的值複制一份後再改變,這會開辟一個新的位址,變量再指向這個新的位址。可變對象,該對象所指向的記憶體中的值可以被改變。變量(準确的說是引用)改變後,實際上是其所指的值直接發生改變,并沒有發生複制行為,也沒有開辟新的出位址,通俗點說就是原地改變。
Python中,數值類型(int和float)、字元串str、元組tuple都是不可變類型。而清單list、字典dict、集合set是可變類型。
8.append()可以在清單末尾添加元素,insert()可在清單的任何位置添加元素,可以使用del()删除指定位置的元素,使用pop()可以删除清單的末尾元素并且可以使用它。如果知道要删除的值可以使用remove()函數,但是需要注意的是remove隻删除第一個指定的值,如果要删除的值可能在清單中出現多次則需要使用循環來判斷是否删除了所有的這樣的值。
9. sort()函數可以将清單中的元素按照字母順訊進行排序,另外隻需要向sort()方法中傳遞參數reverse=True将可以按與字母順序相反的順序進行清單元素的排序。注意的是sort會永久的改變清單中元素的順序;sorted()方法可以進行臨時排序,這樣并不會改變原來的順序。
10. reverse()永久的修改清單中的【排列順序】
11. len可以快速擷取清單的長度
12. 我們可以使用range函數輕松的生成一系列的數字,例如
for i range(1,5):
print (i)
另外在使用range函數時還可以使用步長例如
range(2,11,2)
,這裡面最後一個數是步長
13.清單解析在python使用中是非常重要的,因為這會幫助我們減少代碼,如下:
nums = [val**2 for val in range(2,15,2)] #注意這裡的for語句末尾沒有冒号
14.通路清單中的部分元素可以使用切片。
[a:b]
表示從a開始到b的前一個元素停止
[a:]
表示從a開始到末尾
[:b]
表示從頭開始到b的前一個元素
[-3:]
負數表示傳回距離末尾相應距離的元素,比如這個例子就代表最後3個元素。
15.元組是不可變對象,其與清單類似,但是使用圓括号而不是方括号來辨別。
16.判斷特定值是否包含在清單中使用in 判斷不在清單中使用not in
17.python中可以先建立一個空字典,字典用大括号,然後在添加鍵值對
18.如果想删除字典裡面的鍵值對那麼可以使用del直接删除例如
del name['jack ma']
這樣把鍵jack ma 和其對應的建值都進行了删除
19.python的字典中采用items()來周遊字典中的鍵值對,其中傳回兩個值分别為鍵和值。采用keys()表示鍵,采用values()表示值
20.對待清單中重複的元素可以采用set來進行去重
21.我們在函數中使用清單時,有時候希望禁止函數修改清單,可以采用切片法構造副本,然後進行編寫程式,這樣不會改變初始的值。
func(origin_num[:],new_nums)#這樣就建立了一個origin_num的副本
22.在函數調用語句中收集任意數量的形參,使用* 來解決這個問題。
23.學習python的list,tuple,dict,set的時候被插入和删除的用法歸納如下:
對于List:
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
classmates.append(‘Adam’) //添加在末尾,沒有add()方法
classmates.insert(1, ‘Jack’) //在指定位置添加
classmates.pop(1) //在知道位置删除,參數是索引
del classmate[1] //删除第二個元素
classmates.remove(‘Bob’) //參數是元素,删除第一個與Bob值比對的元素,之後又相同元素不會删除
對于dict:
d = {‘a’: ‘A’, ‘b’: ‘B’}
del d[‘a’]
d.pop(‘a’) //參數是key,沒有remove()方法
d[‘c’]=‘C’; //插入直接指派即可
對于set:
s={1,2,3} //set對象的建立也可以是s=set(iterable)
s.add(8) //添加8到末尾 沒有append()方法
s.remove(8) //參數是元素,不是索引 删除8
s.pop() //删除最後一個元素
對于tuple:
由于tuple一旦初始化就不能修改,是以不能插入和删除
24.在python中首字母大寫的名稱指的是類可以用6個雙引号來編寫一個文檔字元串,對類的功能進行描述。
25. init()是一個特殊的方法,每當我們根據一個類建立新執行個體時,python都會自動運作它。在這種方法中開頭和結尾都有兩個下劃線,這是一種約定,旨在避免python預設方法與普通方法名稱沖突。
26.類中的每一個屬性都必須有初始值,哪怕這個值是0或空字元串。在有些情況下,如設定預設值時,在方法__init__()内指定這種初始值是可行的,如果我們對這個屬性這麼做了就無需包含它提供初始值的形參。例如
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.oldnum = 0
-
在python中同樣有類的繼承,super()是一個特殊的函數,幫助python将父類和子類關聯起來,此外也同C++一樣可以在父類中對子類進行重寫。
28.有個OrderedDict的庫,這個庫可以保留字典的順序。
29.在命名規則上,類名中的每一個單詞的首字母都要大寫不使用下劃線,在執行個體名和子產品名中都采用小寫格式,并在單詞之間加上下劃線。
30.在類中可以使用一個空行來分隔方法,而在子產品中可使用兩個空行來分隔類。
31.關鍵字with在不在需要通路檔案時将其關閉。
32.處理異常:
我們可以采用try except子產品進行異常處理。例如:
try:
print(3/0)
except zeroerror:
print("you can not divide by zero")
try子產品内隻寫異常的代碼
其他的僅在try代碼成功執行時才需要執行的代碼需要放在else中。
這就是常見的try except else 代碼塊
33. json格式的資料,我們可以使用json包來存儲資料,json.dump()接受兩個實參:要存儲的資料以及可以用于存儲資料的檔案對象。json.load()加載存儲在json檔案中的資訊,然後可以存儲到想要存儲的變量中。
34. 可以使用unittest類進行函數和類的測試。
在繼承unittest.TestCase的類中可以使用斷言這些方法,比如assertEqual(a,b)和assertNotEqual(a,b)等。