python编程从入门到精通读书笔记(基础知识)
生活随笔
收集整理的這篇文章主要介紹了
python编程从入门到精通读书笔记(基础知识)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一部分:基礎知識 學習python想要做的軟件
?1.開機答題軟件,(電腦一開機的輸入密碼,改為答題,初步設定為選擇題,答對了才可以進入。)
?2.
?
第二章
2.1第一個程序:
?print("Hello Python World!")
?
2.2變量
?命名:只能包含字母,數字,下劃線,不能數字打頭,不能有空格,不能用關鍵字,應簡短有效
??注意:使用小寫的python變量名比較好。
?方法:可對數據進行的操作。 格式為:變量名.方法名()???? 例: name.title()? ?
2.3字符串
?格式:python中,用括號括起來的都是字符串,單引號和雙引號都行。
?修改大小寫:
??title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母改為大寫。
??upper() 全部大寫
??lower() 全部小寫
?拼接字符串:
??用+相連:? "hello," + "world"
?空白:非打印字符,包括 空格,制表符\t,換行符\n
?刪除空白:
??去掉開頭的空白:lstrip()
??去掉結尾的空白:rstrip()
??去掉兩端的空白:strip()
2.4數字
?運算:+ - * / **??????? 備注:兩個乘號(**)表示乘方運算
?將數字轉為字符串: str(11)
?在python3中,可以直接運算,一般都對,在python2中則要考慮浮點數和整數的區別。
?
2.5注釋
?單行注釋: #這是注釋
?多行注釋: '''這是注釋'''
?import this 第三章 列表簡介
3.1列表
?定義:一系列按特定順序排列的元素
?格式:用方括號表示列表,并用逗號來分割其中的元素?
??例:bicycles = ['trek','cannondale','redline','specfalized']?
?訪問:列表是有序集合,通過索引訪問,索引從0開始,-1返回最后一個元素
??例:bicycles = ['trek','cannondale','redline','specfalized']?
???print(bicycles[0])
3.2操作列表
?motorcycles = ['honda','yemaha','suzuki']
?修改: motorcyctes[0] = 'ducati'
?添加:
??末尾追加:append()?? motorcycles.append('ducati')
??中間插入:insert()?motorcycles.insert(0,'ducati')
?刪除:
??直接去掉:del??del motorcycles[0]
??取出末尾的元素:pop()??motorcycle = motorcycles.pop()
??取出任一位置元素:pop()??motorcycle = motorcycles.pop(1)
??根據值刪除:remove()??motorcycles.remove('ducati')
??
3.3列表排序
?永久排序:?字母正序:sort()??? 字母倒序:sort(reverse=True)?例:list.sort()
?臨時排序: ?字母正序:sorted()?字母倒序:sorted(reverse=True)?例:list.sorted()
?反轉排序:?reverse()?例:reverse(list)
?獲取長度:?len()??例:len(list)
?
第四章 操作列表
4.1 遍歷
?for循環:增強for循環和普通for循環
?例:?for? name? in names:
????print(name)
?or:??for?i in range(0,len(names)):
????print(names[i])
4.2 注意事項
?命名:盡量用單數和復數,好區別:如? for cat in cats:
?縮進:for循環中執行的代碼必須縮進,才能正常循環。
?冒號:for循環語句的冒號是標識循環開始的,必須有。
4.3數值列表
?列表很適合存儲數字集合。
?一個范圍:?range(m,n) ??注:m-開始??? n-結尾????? 含頭不含尾
?指定步長:?range(m,n,x)?注:m-開始??? n-結尾?? x-步長?? 含頭不含尾
?裝換為列表:numbers = list(range(1,6))
?統計函數:
??digits = [1,2,3,4,5,6,7,8,9,0]
??min(digits)
??max(digits)
??sum(digits)
?列表解析: 用一行代碼生成列表
??例: aquares = [value for value in range(0,10)]
4.4?切片
?定義:通過指定索引,獲取列表的一個子集
??players = ['charles','martina','michael','florence','eli']
??players[0:3],players[1:4],players[:3],players[2:],players[-3:],players[:]
?遍歷:for player in players[:3]:
?復制列表:創建一個包含整個列表的切片?[:]
??my_foods = ['pizza','falafel','carrot cake']
??friend_foods = my_foods[:]
??
4.5 元組
?定義:不可修改的列表,用圓括號()來包裹標識.?dimensions = (200,50)
?遍歷:for dimension in dimensions:
?修改元組變量:重新給變量賦值 4.6?代碼編寫格式指南
?PEP8
?縮進:4個空格
?行長: 不超過80字符
??? 注釋行長不超過72字符
?空行:分割代碼塊 第五章 if語句
5.2?條件測試:值為 Ttue 或 Flase 的表達式。
?相等:=?
?不等:!=
?多條件:and ?age>22 and age<36
???or??age>22?or age==18
?列表中是否包含特定值:in ?not in
???例:requested = ['1','2','3']
????'1' in requested
????'2' not in requested
?布爾表達式:
5.3 if語句
?if
?if-elif
?if-elif-else
5.4 if處理列表
?檢查特殊元素:循環套if
?確定列表不為空:if套循環
?
第六章 字典
6.1 定義:用花括號包裹的一系列鍵值對。鍵值之間用冒號分隔,鍵值對之間用逗號分隔。
?例: alien_0 = {'color':'green','points':'5'}
6.2 訪問:print(alien_0['color'])
?添加:依次指定字典名,用方括號括起的見和相關聯的值
??例:alien_0['x_position'] = 0
?修改:依次指定字典名,用方括號括起的鍵和與該鍵相關聯的新值
?刪除:del 字典名[要刪除的鍵]
6.3 遍歷:
?遍歷所有鍵值對:items():返回一個鍵值對列表
??例: for key,value in alien.items():
?遍歷所有鍵:keys():返回一個鍵的列表:
??例:for key in alien.keys():??? 或者? for key in alien:
?按順序遍歷所有鍵:用sorted()先排序再遍歷
??例: for key in sorted(alien.keys()):
?遍歷字典中的所有值:values(): 返回一個值的列表
??例: for value in alien.values():
?剔除重復項再遍歷值: set()
??例: for value in set(alien.values()):
6.4 嵌套:
?定義:將一系列字典存儲在列表中,或將列表作為值存儲在字典中。
?字典列表:
?在字典中存儲列表:
?在字典中存儲字典:
?
第7章 用戶輸入和while循環
7.1用戶輸入字符串: input()
?字符串轉數字 : int()
?求模運算符:?%
7.2?while循環
?格式:?while 條件:
?使用標志:
?結束循環:break
?結束循環余下代碼,開始下個循環 continue
?用途:在循環的途中修改字典,列表。
?
第8章 函數
8.1 定義:帶名字的代碼塊。用于完成具體的工作
?格式:?
??def?函數名(參數):
???代碼塊
8.2?實參和形參
?實參:調用函數的時候傳遞給函數的實際值。
?形參:定義函數的時候括號中的變量名。
?關鍵字實參:在調用方法的時候指明形參。格式類似于:?? 函數名(形參=實參)
?默認值:在定義函數的時候設置默認值。? 格式類似于:?def? 函數名(形參=默認值)
?實參不匹配錯誤:實參數量不對時。
8.3 返回值:函數中用return關鍵字返回值,調用方法的時候用變量接收
?實參可選,不必填的參數設置默認值
8.4 傳遞列表
8.5 傳遞任意數量的實參
?def make_pizza(*toppings):???? *表明這個是一個參數的元組。可以接受任意數量的參數
?def make_pizza(size,*suppings):? 結合使用位置實參和任意數量實參
?def_build_profile(first,last,*user_info): 使用任意數量的關鍵字實參,user_info傳遞鍵值對
8.6 將函數存儲在模塊中
?模塊:擴展名位.py的文件。
?導入整個模塊:在同一目錄層級下, 直接導入:? import module_name
?????使用模塊中的函數:?module_name.function_name()
?導入特定函數:?from module_name import function_name
?????from module_name import function_0,function_1,function-2
?使用as給函數指定別名:from module_name import function_name? as 別名
?使用as給模塊指定別名:import module_name as 別名
?導入模塊中所有函數:?from? module_name import *
8.7 函數編寫指南:
?函數名稱具有描述性,只用小寫字母和下劃線。
?必須有注釋,在函數定義后面。文檔字符串格式。
?函數之間用兩行空行分開。
?
第9章 類
?類:表示現實世界中的事物和情景。定義一大類對象都有的通用行為。
?對象:基于類創建,具備類的通用行為和獨特個性。
?實例化:根據類來創建對象。
9.1 創建和使用類
?定義: class Dogs():??#類名首字母要大寫?? class ClassName(): ??
?方法:?def __init__(self,name,age):??#構造方法,self就是this。 可供類中所有方法使用。
???error: Dog() takes no arguments???? 注意init兩邊是雙下劃線,???
?屬性:name,age? 可以通過實例訪問的變量。?#self.age = age??? self.name = name
9.2 根據類創建實例
??dog = Dogs('豆豆',6)
?修改屬性的值:
??直接通過實例進行修改:
???my_new_car.odometer_reading = 23
??通過方法進行設置:
???my_new_car.update_odometer(23)
??通過方法進行遞增:
???my_new_car.increment_odometer(100)
9.3 繼承
??一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法。原有的類稱為父類,新類
?稱為子類,子類繼承了父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
?創建子類時,父類必須包含在當前文件中,且位于子類前面。定義子類時,在括號中指定父類的名
?字。
??方法__init__()必須接受創建父類所需的信息。且在方法中有一個特殊函數super().__init__()
?將父類和子類關聯起來。讓子類實例包含父類的所有屬性。父類也叫超類。
??重寫:子類中和父類名字相同的方法。
??將實例用過屬性:將類的一部分作為一個獨立的類提取出來。
??
9.4 導入類
?將類存儲在模塊中,然后在模塊中導入類。
?導入單個類:
??from car import Car
??my_car = Car(...)
?在一個模塊中存儲多個類:from car import Car,ElectricCar
?導入整個模塊:
??import car
??my_beetle = car.Car(...)
?導入模塊中的所有類: from module_name import *
?在一個模塊中導入另一個模塊:
?
9.5 Python 標準庫
?順序字典: from collections import OrderedDict
?
9.6 類編碼風格
?類名:駝峰命名法,首字母大寫,不用下劃線
?實例名/模塊名:小寫,單詞之間用下劃線隔開
?類注釋:類定義后面加文檔字符串,描述類的功能。
?分割方法:一個空行
?分割類:兩個空行
?導入順序:先導入標準模塊庫,再添加一個空行,再導入自己編寫的模塊。
?
?
第10章 文件和異常
?異常:Python創建的特殊對象,用于管理程序運行時出現的錯誤。
?
10.1 從文件中讀取數據
??read()? : 一次性讀取整個文件內容。推薦使用read(size)方法,size越大運行時間越長
??readline()? :每次讀取一行內容。內存不夠時使用,一般不太用
??readlines()?? :一次性讀取整個文件內容,并按行返回到list,方便我們遍歷
?全部讀取:
?with open('pi_digits.txt') as file_object:
??contents = file_object.read()
??print(contents)
?with 標識用,不用手動打開(open),關閉(close)
??#相對路徑報錯,不知道是不是notepad++的問題。絕對路徑可以找到文件。直接點擊文件運行也可以,就是在
??#?notepad++中運行找不到。
?逐行讀取:
?with open(filename) as file_object:
?for line in file_object:
??print(line.rstrip())
?注:文件讀取的本質是用迭代器一個個讀,因而一個文件讀到最后以后,再調用讀取的方法,就讀不到東西了。
?放到列表中:
?with open(filename) as file_object:
??lines = file_object.readlines()
??
10.2 寫入文件
??write(string)需要傳入一個字符串做為參數,否則會報錯
??writelines(list)既可以傳入字符串又可以傳入一個字符序列,并將該字符序列寫入文件
??注意 :writelines()必須傳入的是字符序列(字符串列表),不能是數字序列
?with open('F:\pythonStudy\learning_python.txt','a') as file_object:
?file_object.write('追加了一句話。')
?open參數:? a - 追加?w - 直接寫?r - 只讀
?
10.3 異常
?格式: try-exists-else
?例: ?try:
????print(5/0)
???exists:
????print("You can't divide by zero!")
???else:
????print('success')
?
10.4 存儲數據
?json模塊用來存取數據,很方便的轉為python可以讀取的數據類型。
?存:json.dump(數據,文件)
?取:json.load(文件)
?重構:代碼寫好后,將代碼劃分為一系列完成具體工作的函數,這樣的過程稱為重構。
?
?
第11章 測試代碼
?測試模塊:unittest
?單元測試:用于核實函數的某個方面沒有問題。
?測試用例:是一組單元測試。
?全覆蓋式測試用例:
?具體用法:
??1.導入unittest測試模塊。導入要測試的方法或類。
??2.創建測試類,繼承了unittest.TestCase類。沒有__init__方法,直接寫測試方法。測試方法的名字用test開頭
???后面的單詞最好具有描述性,說清這個方法是測試什么的。
??3.在測試方法中調用需要測試的方法,然后用斷言方法來判斷是否通過測試
???斷言方法: ?self.assertEqual(方法返回值,預計返回值)
??4.在最后面用 unittest.main() 啟用這個測試用例。????
?斷言方法:
??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 中
?setUp():測試類的初始化方法,用于創建一個需要測試的類的單例。
?
?
?1.開機答題軟件,(電腦一開機的輸入密碼,改為答題,初步設定為選擇題,答對了才可以進入。)
?2.
?
第二章
2.1第一個程序:
?print("Hello Python World!")
?
2.2變量
?命名:只能包含字母,數字,下劃線,不能數字打頭,不能有空格,不能用關鍵字,應簡短有效
??注意:使用小寫的python變量名比較好。
?方法:可對數據進行的操作。 格式為:變量名.方法名()???? 例: name.title()? ?
2.3字符串
?格式:python中,用括號括起來的都是字符串,單引號和雙引號都行。
?修改大小寫:
??title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母改為大寫。
??upper() 全部大寫
??lower() 全部小寫
?拼接字符串:
??用+相連:? "hello," + "world"
?空白:非打印字符,包括 空格,制表符\t,換行符\n
?刪除空白:
??去掉開頭的空白:lstrip()
??去掉結尾的空白:rstrip()
??去掉兩端的空白:strip()
2.4數字
?運算:+ - * / **??????? 備注:兩個乘號(**)表示乘方運算
?將數字轉為字符串: str(11)
?在python3中,可以直接運算,一般都對,在python2中則要考慮浮點數和整數的區別。
?
2.5注釋
?單行注釋: #這是注釋
?多行注釋: '''這是注釋'''
?import this 第三章 列表簡介
3.1列表
?定義:一系列按特定順序排列的元素
?格式:用方括號表示列表,并用逗號來分割其中的元素?
??例:bicycles = ['trek','cannondale','redline','specfalized']?
?訪問:列表是有序集合,通過索引訪問,索引從0開始,-1返回最后一個元素
??例:bicycles = ['trek','cannondale','redline','specfalized']?
???print(bicycles[0])
3.2操作列表
?motorcycles = ['honda','yemaha','suzuki']
?修改: motorcyctes[0] = 'ducati'
?添加:
??末尾追加:append()?? motorcycles.append('ducati')
??中間插入:insert()?motorcycles.insert(0,'ducati')
?刪除:
??直接去掉:del??del motorcycles[0]
??取出末尾的元素:pop()??motorcycle = motorcycles.pop()
??取出任一位置元素:pop()??motorcycle = motorcycles.pop(1)
??根據值刪除:remove()??motorcycles.remove('ducati')
??
3.3列表排序
?永久排序:?字母正序:sort()??? 字母倒序:sort(reverse=True)?例:list.sort()
?臨時排序: ?字母正序:sorted()?字母倒序:sorted(reverse=True)?例:list.sorted()
?反轉排序:?reverse()?例:reverse(list)
?獲取長度:?len()??例:len(list)
?
第四章 操作列表
4.1 遍歷
?for循環:增強for循環和普通for循環
?例:?for? name? in names:
????print(name)
?or:??for?i in range(0,len(names)):
????print(names[i])
4.2 注意事項
?命名:盡量用單數和復數,好區別:如? for cat in cats:
?縮進:for循環中執行的代碼必須縮進,才能正常循環。
?冒號:for循環語句的冒號是標識循環開始的,必須有。
4.3數值列表
?列表很適合存儲數字集合。
?一個范圍:?range(m,n) ??注:m-開始??? n-結尾????? 含頭不含尾
?指定步長:?range(m,n,x)?注:m-開始??? n-結尾?? x-步長?? 含頭不含尾
?裝換為列表:numbers = list(range(1,6))
?統計函數:
??digits = [1,2,3,4,5,6,7,8,9,0]
??min(digits)
??max(digits)
??sum(digits)
?列表解析: 用一行代碼生成列表
??例: aquares = [value for value in range(0,10)]
4.4?切片
?定義:通過指定索引,獲取列表的一個子集
??players = ['charles','martina','michael','florence','eli']
??players[0:3],players[1:4],players[:3],players[2:],players[-3:],players[:]
?遍歷:for player in players[:3]:
?復制列表:創建一個包含整個列表的切片?[:]
??my_foods = ['pizza','falafel','carrot cake']
??friend_foods = my_foods[:]
??
4.5 元組
?定義:不可修改的列表,用圓括號()來包裹標識.?dimensions = (200,50)
?遍歷:for dimension in dimensions:
?修改元組變量:重新給變量賦值 4.6?代碼編寫格式指南
?PEP8
?縮進:4個空格
?行長: 不超過80字符
??? 注釋行長不超過72字符
?空行:分割代碼塊 第五章 if語句
5.2?條件測試:值為 Ttue 或 Flase 的表達式。
?相等:=?
?不等:!=
?多條件:and ?age>22 and age<36
???or??age>22?or age==18
?列表中是否包含特定值:in ?not in
???例:requested = ['1','2','3']
????'1' in requested
????'2' not in requested
?布爾表達式:
5.3 if語句
?if
?if-elif
?if-elif-else
5.4 if處理列表
?檢查特殊元素:循環套if
?確定列表不為空:if套循環
?
第六章 字典
6.1 定義:用花括號包裹的一系列鍵值對。鍵值之間用冒號分隔,鍵值對之間用逗號分隔。
?例: alien_0 = {'color':'green','points':'5'}
6.2 訪問:print(alien_0['color'])
?添加:依次指定字典名,用方括號括起的見和相關聯的值
??例:alien_0['x_position'] = 0
?修改:依次指定字典名,用方括號括起的鍵和與該鍵相關聯的新值
?刪除:del 字典名[要刪除的鍵]
6.3 遍歷:
?遍歷所有鍵值對:items():返回一個鍵值對列表
??例: for key,value in alien.items():
?遍歷所有鍵:keys():返回一個鍵的列表:
??例:for key in alien.keys():??? 或者? for key in alien:
?按順序遍歷所有鍵:用sorted()先排序再遍歷
??例: for key in sorted(alien.keys()):
?遍歷字典中的所有值:values(): 返回一個值的列表
??例: for value in alien.values():
?剔除重復項再遍歷值: set()
??例: for value in set(alien.values()):
6.4 嵌套:
?定義:將一系列字典存儲在列表中,或將列表作為值存儲在字典中。
?字典列表:
?在字典中存儲列表:
?在字典中存儲字典:
?
第7章 用戶輸入和while循環
7.1用戶輸入字符串: input()
?字符串轉數字 : int()
?求模運算符:?%
7.2?while循環
?格式:?while 條件:
?使用標志:
?結束循環:break
?結束循環余下代碼,開始下個循環 continue
?用途:在循環的途中修改字典,列表。
?
第8章 函數
8.1 定義:帶名字的代碼塊。用于完成具體的工作
?格式:?
??def?函數名(參數):
???代碼塊
8.2?實參和形參
?實參:調用函數的時候傳遞給函數的實際值。
?形參:定義函數的時候括號中的變量名。
?關鍵字實參:在調用方法的時候指明形參。格式類似于:?? 函數名(形參=實參)
?默認值:在定義函數的時候設置默認值。? 格式類似于:?def? 函數名(形參=默認值)
?實參不匹配錯誤:實參數量不對時。
8.3 返回值:函數中用return關鍵字返回值,調用方法的時候用變量接收
?實參可選,不必填的參數設置默認值
8.4 傳遞列表
8.5 傳遞任意數量的實參
?def make_pizza(*toppings):???? *表明這個是一個參數的元組。可以接受任意數量的參數
?def make_pizza(size,*suppings):? 結合使用位置實參和任意數量實參
?def_build_profile(first,last,*user_info): 使用任意數量的關鍵字實參,user_info傳遞鍵值對
8.6 將函數存儲在模塊中
?模塊:擴展名位.py的文件。
?導入整個模塊:在同一目錄層級下, 直接導入:? import module_name
?????使用模塊中的函數:?module_name.function_name()
?導入特定函數:?from module_name import function_name
?????from module_name import function_0,function_1,function-2
?使用as給函數指定別名:from module_name import function_name? as 別名
?使用as給模塊指定別名:import module_name as 別名
?導入模塊中所有函數:?from? module_name import *
8.7 函數編寫指南:
?函數名稱具有描述性,只用小寫字母和下劃線。
?必須有注釋,在函數定義后面。文檔字符串格式。
?函數之間用兩行空行分開。
?
第9章 類
?類:表示現實世界中的事物和情景。定義一大類對象都有的通用行為。
?對象:基于類創建,具備類的通用行為和獨特個性。
?實例化:根據類來創建對象。
9.1 創建和使用類
?定義: class Dogs():??#類名首字母要大寫?? class ClassName(): ??
?方法:?def __init__(self,name,age):??#構造方法,self就是this。 可供類中所有方法使用。
???error: Dog() takes no arguments???? 注意init兩邊是雙下劃線,???
?屬性:name,age? 可以通過實例訪問的變量。?#self.age = age??? self.name = name
9.2 根據類創建實例
??dog = Dogs('豆豆',6)
?修改屬性的值:
??直接通過實例進行修改:
???my_new_car.odometer_reading = 23
??通過方法進行設置:
???my_new_car.update_odometer(23)
??通過方法進行遞增:
???my_new_car.increment_odometer(100)
9.3 繼承
??一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法。原有的類稱為父類,新類
?稱為子類,子類繼承了父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
?創建子類時,父類必須包含在當前文件中,且位于子類前面。定義子類時,在括號中指定父類的名
?字。
??方法__init__()必須接受創建父類所需的信息。且在方法中有一個特殊函數super().__init__()
?將父類和子類關聯起來。讓子類實例包含父類的所有屬性。父類也叫超類。
??重寫:子類中和父類名字相同的方法。
??將實例用過屬性:將類的一部分作為一個獨立的類提取出來。
??
9.4 導入類
?將類存儲在模塊中,然后在模塊中導入類。
?導入單個類:
??from car import Car
??my_car = Car(...)
?在一個模塊中存儲多個類:from car import Car,ElectricCar
?導入整個模塊:
??import car
??my_beetle = car.Car(...)
?導入模塊中的所有類: from module_name import *
?在一個模塊中導入另一個模塊:
?
9.5 Python 標準庫
?順序字典: from collections import OrderedDict
?
9.6 類編碼風格
?類名:駝峰命名法,首字母大寫,不用下劃線
?實例名/模塊名:小寫,單詞之間用下劃線隔開
?類注釋:類定義后面加文檔字符串,描述類的功能。
?分割方法:一個空行
?分割類:兩個空行
?導入順序:先導入標準模塊庫,再添加一個空行,再導入自己編寫的模塊。
?
?
第10章 文件和異常
?異常:Python創建的特殊對象,用于管理程序運行時出現的錯誤。
?
10.1 從文件中讀取數據
??read()? : 一次性讀取整個文件內容。推薦使用read(size)方法,size越大運行時間越長
??readline()? :每次讀取一行內容。內存不夠時使用,一般不太用
??readlines()?? :一次性讀取整個文件內容,并按行返回到list,方便我們遍歷
?全部讀取:
?with open('pi_digits.txt') as file_object:
??contents = file_object.read()
??print(contents)
?with 標識用,不用手動打開(open),關閉(close)
??#相對路徑報錯,不知道是不是notepad++的問題。絕對路徑可以找到文件。直接點擊文件運行也可以,就是在
??#?notepad++中運行找不到。
?逐行讀取:
?with open(filename) as file_object:
?for line in file_object:
??print(line.rstrip())
?注:文件讀取的本質是用迭代器一個個讀,因而一個文件讀到最后以后,再調用讀取的方法,就讀不到東西了。
?放到列表中:
?with open(filename) as file_object:
??lines = file_object.readlines()
??
10.2 寫入文件
??write(string)需要傳入一個字符串做為參數,否則會報錯
??writelines(list)既可以傳入字符串又可以傳入一個字符序列,并將該字符序列寫入文件
??注意 :writelines()必須傳入的是字符序列(字符串列表),不能是數字序列
?with open('F:\pythonStudy\learning_python.txt','a') as file_object:
?file_object.write('追加了一句話。')
?open參數:? a - 追加?w - 直接寫?r - 只讀
?
10.3 異常
?格式: try-exists-else
?例: ?try:
????print(5/0)
???exists:
????print("You can't divide by zero!")
???else:
????print('success')
?
10.4 存儲數據
?json模塊用來存取數據,很方便的轉為python可以讀取的數據類型。
?存:json.dump(數據,文件)
?取:json.load(文件)
?重構:代碼寫好后,將代碼劃分為一系列完成具體工作的函數,這樣的過程稱為重構。
?
?
第11章 測試代碼
?測試模塊:unittest
?單元測試:用于核實函數的某個方面沒有問題。
?測試用例:是一組單元測試。
?全覆蓋式測試用例:
?具體用法:
??1.導入unittest測試模塊。導入要測試的方法或類。
??2.創建測試類,繼承了unittest.TestCase類。沒有__init__方法,直接寫測試方法。測試方法的名字用test開頭
???后面的單詞最好具有描述性,說清這個方法是測試什么的。
??3.在測試方法中調用需要測試的方法,然后用斷言方法來判斷是否通過測試
???斷言方法: ?self.assertEqual(方法返回值,預計返回值)
??4.在最后面用 unittest.main() 啟用這個測試用例。????
?斷言方法:
??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 中
?setUp():測試類的初始化方法,用于創建一個需要測試的類的單例。
?
?
轉載于:https://www.cnblogs.com/anningkang/p/11159739.html
總結
以上是生活随笔為你收集整理的python编程从入门到精通读书笔记(基础知识)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyCharm的高效使用技巧
- 下一篇: 如何做一个简单的DIY家具?