《Python編程--從入門到實踐》--學習記錄

第二章

1.python和c/c++在if語句使用上是有區別的
(1)
python中的if語句格式:
if 條件:
代碼塊 #注意,這裏一定要有Tab空格,因爲python語法就是按這樣來理邏輯的
else 條件:
代碼塊

(2) c/c++中的if語句格式:
if (條件)
{
代碼塊;
}
else
{
代碼塊;
}

python沒有switch用法

2.在python shell中可以使用快捷鍵F鍵找關鍵詞

第三章

1.常用函數及易錯點
(1) 修改大小寫–方法:title(), upper(), lower()
(2) 刪除空白–方法:strip(), lstrip(), rstrip()
(3) 字符轉換:str()函數
(4) 索引0開始,-1爲倒數
(5)列表
添加元素:append()方法 --隊末,insert()方法–任意位置
刪除元素:del 語句指定位置,pop()方法–隊末,指定位置, remove()方法–指定元素
排序:sort()方法 --按字母永久性排序,可倒序 ,sorted()函數–按字母臨時排序,可倒敘

注:不能直接print(a.sort()),這樣會是空列表

反轉元素:reverse()–永久修改順序,復原可再用一次
列表長度:len()

第四章

1.遍歷列表
(1)函數range(): range(a,b,step) 範圍[a,b)
(2)函數list(): 直接轉換成列表
(3)乘方運算符號: **
(4)處理數字的函數: min(), max(), sum()
(5)列表解析(代碼簡寫):列表變量名 = [表達式 for 變量名 in range() ]
(6)求餘 %

2.切片
(1)切片:截取列表 列表變量名[a,b]----範圍[a,b)
(2) 複製列表: 新列表名 = 原列表名[ : ]

3.元組–不可變列表,圓括號
(1)修改元組變量:重新定義元組

第五章

1.與:關鍵字 and ,或:關鍵字 or, 包含關係 : in,不包含 : not in

2.if 語句結構: 兩個條件:if-else ,多個條件: if-elif-else,省略else(只執行符合條件的):if-elif

注:如果只想執行一個代碼塊,用if-elif-else結構;運行多個代碼塊,用一系列的if

第六章

1.字典
(1) 刪除鍵-值對: del 字典名[‘鍵’]
(2) 書寫格式:
字典名 = {
鍵:值,
鍵:值 }
(3) 返回鍵-值對:方法 items()–key,value = 字典名. items()
(4)返回鍵: 方法 keys() , 返回值: 方法 values()
(5)找出列表中獨一無二的元素(重複的只取一個): set() 函數

2.嵌套
(1)列表中儲存字典:一個列表元素由多個鍵值對組成
(2)字典中儲存列表:一個鍵關聯多個值
(3)for 變量名 in range(num) :重複循環num此·2
(4)字典中儲存字典:

注:嵌套其實沒那麼複雜,處理的時候,只需分清是列表還是字典,然後按相應的規則處理就行

第7章 語法結構

1.輸入函數:input()

2.while 循環
(1)語法:
while 條件:
do
(2) break退出循環
(3) continue退出本次循環

第7章+ 自定義函數

1.語法
def 函數名():
函數體

2.調用函數
函數名()

3.實參傳遞
(1)位置參數:按順序
(2)關鍵字參數: 在實參中將名稱和值關聯起來
(3)默認值:給形參自定義好默認值

可以混合使用位置參數,關鍵字參數,默認值參數

4.返回值:return–可以返回任何類型的值,包括字典和列表等!–如果需要打印值,還需使用print() 函數

5.讓實參變爲可選的:加上判斷語句if 判別形參的值是否爲空,可選形參寫爲:形參名 = ‘’

6.可以向函數傳遞列表(實參爲列表)
(1)如果不想改變原列表內容,可在複製原列表,對複製列表進行操作:
function_name( list_name[ : ] )

7.函數註釋說明:
def function_name(形參):
“""
函數說明
“”"
函數體

 注:函數說明部分可用方法_doc_查看

8.傳遞任意數量的實參:def function_name(*形參名)–*形參名中的星號讓Python創建一個空元組,並將收到的所有值都封裝到元組中

9.混合傳遞位置實參和任意數量實參: 例 def make_pizza(size,*topping):

10.使用任意數量的關鍵字實參:例 def aa(first,last,**user_info):
形參 **user_info的兩個星號創建一個名爲user_name的空字典,並將收到的所有名稱-值對都封裝到這個字典中。

11.將函數儲存在模塊中:
(1)把包含函數的python模塊放在同一目錄下–新python文件中 ”import 模塊名(py文件名)“–使用函數:模塊名.函數名(實參)
(2)直接從模塊導入函數: from 模塊名 import 函數名
(3)給函數指定別名: from 模塊名 import 函數名 as 別名
(4)給模塊指定別名: import 模塊名 as 別名
(5)導入模塊中所有函數: from 模塊名 import * --可以通過名稱來調用每個函數,不需要使用句點表示法

第8章 類

1.特殊方法 __init__():根據類創建實例時,會自動運行!注意:init前後是兩條下劃線!

2.對類中的任何方法,形參self都必不可少!因爲示例要傳遞給形參self . (類中的方法和函數是一個意思!)

3.屬性(都放在__init__方法中):可通過實例訪問的變量, 類:首字母大寫的名稱, 實例:首字母小寫的名稱

4.語法:
class class_name():
class_body

5.創建實例時,類中輸入的參數是_init_()中的參數

6.使用類和實例:
(1)可以給屬性指定默認值
(2)修改屬性的值:
one.直接通過實例訪問修改
two.通過方法修改屬性的值,其實就是新定義個方法專門用來更新屬性的值,也可以讓其自動更新,具體看怎麼編寫這個方法

7.繼承
(1)一個類繼承另一個類時,自動獲得另一個類的所有屬性和方法。原有類稱爲‘父類’,現有類稱爲‘子類’
語法:
class 子類名(父類名):
class_body
(2)創建子類時,父類必須包含在當前文件中,且位於子類前面
(3)定義子類時,必須在括號內指定父類的名稱,方法__init__()接受實例所需的信息;super()函數將子類和父類關聯起來,讓實例包含父類所有屬性(初始化父類屬性)

例: def init(self,父類所以屬性名稱)
super().init(父類所有屬性名稱)

(4)如果在子類中的方法與父類中的方法重名,只要是根據子類創建實例,那麼只會調用子類中的方法–通常是在子類和父類方法有區別時才改寫

8.將類導入模塊
(1)在最開頭需要編寫文檔字符串
例: “"" 一個可用於表示汽車的類 “”"
(2)導入類:
from 模塊名 import 類名
導入全部類(不推薦): from 模塊名 import *
(3)一個模塊可以儲存多個類,也可以在一個模塊中導入另一個模塊(比如需要用到另一個模塊的類,直接import就好)

總結:儲存,調用類和模塊是很靈活的!

9.類編碼風格
(1)
類名採用駝峯命名法:類名中的每個單詞的首字母大寫,不使用下劃線
實例名和模塊名:小寫格式,在單詞間加上下劃線
(2)
模塊中:用兩個空行分隔類
類中:一個空行分隔方法
(3)
導入模塊:先編寫導入標準庫模塊,再加個空行,然後導入自己編寫的模塊

第10章 文件異常

1.關鍵字 with :打開文件,在不需要訪問文件後將其關閉。也可使用close()函數,但不推薦,因爲在有bug時,導致close()未執行,文件不會關閉。

2.方法read()爲讀取文件,到達文件末尾時會返回一個空字符串,這個空字符串顯示出來是一個空行。可以使用方法rstrip()刪除

3.打開文件的語法:
with open(filename) as file_object:
主體

4.使用with關鍵字時,open()返回的文件對象只在with代碼塊內可用。如果要在with代碼塊外訪問文件的內容,可在with代碼塊內將文件的隔行儲存在一個列表,在with代碼塊外使用該列表
例:
with open(filename) as file_object:
lines = file_object.readlines() #隔行儲存在一個列表
##with代碼塊外使用該列表
for line in lines:
print(line.rstrip())

5.讀取文本時,所有文本解讀爲字符串,如果要使用數字,需要用int(),float()轉換

6.方法replace()將字符串中特定單詞都替換爲另一個單詞,將a換成b用法:變量名.replace(‘a’,‘b’)

7.**寫入文件:**方法write() , 語法(例):
with open(filename,‘w’) as file_object:
file_object.write(‘內容’)
注:‘w’寫入模式,‘r’讀取模式,‘a’附加模式,讀取和寫入模式‘r+’。默認只讀模式’r’

8.write模式不會在寫入的文本末尾添加換行符,要自己加入換行符 ‘\n’

9.給文本添加內容,而不是覆蓋原有內容,可以用附加模式‘a’

10.異常(看經驗,提前分析哪些地方會報錯):每當python發生錯誤時,它都會創建一個異常的特殊對象。如果編寫了處理該異常的代碼,程序將繼續運行,如果未對異常處理,程序將停止,並顯示traceback
(1) 異常使用**try-except(-else)**代碼塊處理–簡單說,加入的異常處理就是將編譯器的報錯換成易懂的報錯
例:
try:
通常是程序主體
except 編譯器錯誤類型:
print(易懂的報錯語言)
else:
無錯誤時的代碼行

11.分析文本
(1) 方法split(): 根據一個字符串創建一個單詞列表,例:
title = ‘Alice in Wonderland’
title.split()
結果:[‘Alice’,‘in’,‘Wonderland’]
(2)失敗時通過,不做其他:在except代碼塊中使用pass語句
(3)方法count():計算特定單詞或短語在字符串中出現了多少次,例:
line = ‘row,Row,row your boat’
line.lower().count(‘row’)
結果: 3

12.存儲數據:模塊json–將簡單的python數據結構轉儲到文件中,並在程序再次運行時加載該文件中的數據。還可以在python程序間分享數據
(1) 函數json.dump():接受兩個實參–要儲存的數據以及可用於存儲數據的文件對象
函數 json.load(): 將列表讀取到內存,接受一個參數–存儲數據的文件對象

13.重構:優化代碼,將代碼劃分爲一系列完成具體工作的函數

第12章 測試代碼

編寫函數或者類時,爲其編寫測試–模塊unittest

1.測試函數
(1) 模塊unittest的斷言方法assertEqual(): 覈實得到的結果是否與期望的結果一致
(2) 繼承unittest.TestCase類,子類名包含字樣Test–和一般的類繼承在語法上有點區別,
(3) test_開頭的方法自動運行

2.測試類:
(1) unittest.TestCase類中常用的斷言方法–其實就是一個條件測試

assertEqual(a,b) a=b
assertNotEqual(a,b) a != b
assertTrue(x) x爲True
assertFalse(x) x爲False
assertIn(item,list) item在list中
assertNotIn(item,list) item不在list中

(2)方法setUp():使用此方法就可以在每個測試方法中創建多個實例–相當於多次測試驗證
注如果測試類中包含了方法setUp(),python將先運行它,在運行以test開頭的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章